root/trunk/t/high-funcid-starvation.t @ 164

Revision 164, 1.4 kB (checked in by miyagawa, 7 months ago)

PostgreSQL patch from clkao

Line 
1# $Id$
2# -*-perl-*-
3
4use strict;
5use warnings;
6
7require 't/lib/db-common.pl';
8
9use TheSchwartz;
10use Test::More tests => 12;
11
12run_tests(4, sub {
13    my $client = test_client(dbs      => ['ts1']);
14
15    my $n_jobs = 10;
16    for (1..$n_jobs) {
17        $client->insert("Worker::Job1") or die;
18        $client->insert("Worker::Job2") or die;
19    }
20
21    my $db1 = DBI->connect(dsn_for("ts1"), $ENV{TS_DB_USER}, $ENV{TS_DB_PASS});
22    die unless $db1;
23
24    my $jobs1 = $db1->selectrow_array("SELECT COUNT(*) FROM job WHERE funcid=1");
25    is($jobs1, $n_jobs, "have $n_jobs funcid 1s");
26    my $jobs2 = $db1->selectrow_array("SELECT COUNT(*) FROM job WHERE funcid=2");
27    is($jobs2, $n_jobs, "have $n_jobs funcid 2s");
28
29    my $do_jobs = int($n_jobs / 2);
30    $client->can_do("Worker::Job1");
31    $client->can_do("Worker::Job2");
32    for (1..($do_jobs * 2)) {
33        $client->work_once
34            or die "Couldn't find job to do";
35    }
36
37    my $jobs1b = $db1->selectrow_array("SELECT COUNT(*) FROM job WHERE funcid=1");
38    is($jobs1b, $n_jobs - $do_jobs, "have half funcid 1s");
39    my $jobs2b = $db1->selectrow_array("SELECT COUNT(*) FROM job WHERE funcid=2");
40    is($jobs2b, $n_jobs - $do_jobs, "have half funcid 2s");
41
42
43});
44
45package Worker::Job1;
46use base 'TheSchwartz::Worker';
47sub work {
48    my ($class, $job) = @_;
49    $job->completed;
50}
51
52package Worker::Job2;
53use base 'Worker::Job1';
54
Note: See TracBrowser for help on using the browser.