root/trunk/t/evenly-distribute.t @ 89

Revision 89, 1.6 kB (checked in by bradfitz, 3 years ago)

math was never right in that test anyway.

Line 
1# $Id$
2# -*-perl-*-
3
4use strict;
5use warnings;
6
7require 't/lib/db-common.pl';
8
9use TheSchwartz;
10use Test::More tests => 8;
11
12run_tests(4, sub {
13    my $client = test_client(dbs      => ['ts1', 'ts2']);
14
15    my $n_jobs = 60;
16    for (1..$n_jobs) {
17        my $handle = $client->insert("Worker::Foo");
18        die unless $handle;
19    }
20
21    my $db1 = DBI->connect(dsn_for("ts1"), 'root', '');
22    my $db2 = DBI->connect(dsn_for("ts2"), 'root', '');
23    die unless $db1 && $db2;
24
25    my $jobs1 = $db1->selectrow_array("SELECT COUNT(*) FROM job");
26    my $jobs2 = $db2->selectrow_array("SELECT COUNT(*) FROM job");
27    is($jobs1 + $jobs2, $n_jobs, "inserted all $n_jobs");
28
29    ok($jobs1 > $n_jobs / 4, "at least a quarter of jobs went to db1 ($jobs1 / $n_jobs)");
30    ok($jobs2 > $n_jobs / 4, "at least a quarter of jobs went to db1 ($jobs2 / $n_jobs)");
31
32    my $do_jobs = int($n_jobs / 2);
33    $client->can_do("Worker::Foo");
34    for (1..$do_jobs) {
35        $client->work_once
36            or die;
37    }
38
39    my $jobs1b = $db1->selectrow_array("SELECT COUNT(*) FROM job");
40    my $jobs2b = $db2->selectrow_array("SELECT COUNT(*) FROM job");
41
42    my $remain_jobs = $n_jobs - $do_jobs;
43    is($jobs1b + $jobs2b, $remain_jobs, "expected jobs remain");
44
45    # deltas: how much work gone done each
46    my $jobs1d = $jobs1 - $jobs1b;
47    my $jobs2d = $jobs2 - $jobs2b;
48
49    # difference in work done:
50    my $workdiff = abs($jobs1d - $jobs2d);
51
52});
53
54sub max { $_[0] > $_[1] ? $_[0] : $_[1] }
55
56package Worker::Foo;
57use base 'TheSchwartz::Worker';
58sub work {
59    my ($class, $job) = @_;
60    $job->completed;
61}
Note: See TracBrowser for help on using the browser.