1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.archive.crawler.frontier;
26
27 import org.apache.commons.httpclient.URIException;
28 import org.archive.crawler.datamodel.CandidateURI;
29 import org.archive.crawler.datamodel.CrawlURI;
30 import org.archive.net.UURIFactory;
31
32 import com.sleepycat.je.tree.Key;
33
34 import junit.framework.TestCase;
35
36 /***
37 * Unit tests for BdbMultipleWorkQueues functionality.
38 *
39 * @author gojomo
40 */
41 public class BdbMultipleWorkQueuesTest extends TestCase {
42
43 /***
44 * Basic sanity checks for calculateInsertKey() -- ensure ordinal, cost,
45 * and schedulingDirective have the intended effects, for ordinal values
46 * up through 1/4th of the maximum (about 2^61).
47 *
48 * @throws URIException
49 */
50 public void testCalculateInsertKey() throws URIException {
51 for (long ordinalOrigin = 1; ordinalOrigin < Long.MAX_VALUE / 4; ordinalOrigin <<= 1) {
52 CandidateURI cauri1 =
53 new CandidateURI(UURIFactory.getInstance("http://archive.org/foo"));
54 CrawlURI curi1 = new CrawlURI(cauri1, ordinalOrigin);
55 curi1.setClassKey("foo");
56 byte[] key1 =
57 BdbMultipleWorkQueues.calculateInsertKey(curi1).getData();
58 CandidateURI cauri2 =
59 new CandidateURI(UURIFactory.getInstance("http://archive.org/bar"));
60 CrawlURI curi2 = new CrawlURI(cauri2, ordinalOrigin + 1);
61 curi2.setClassKey("foo");
62 byte[] key2 =
63 BdbMultipleWorkQueues.calculateInsertKey(curi2).getData();
64 CandidateURI cauri3 =
65 new CandidateURI(UURIFactory.getInstance("http://archive.org/baz"));
66 CrawlURI curi3 = new CrawlURI(cauri3, ordinalOrigin + 2);
67 curi3.setClassKey("foo");
68 curi3.setSchedulingDirective(CandidateURI.HIGH);
69 byte[] key3 =
70 BdbMultipleWorkQueues.calculateInsertKey(curi3).getData();
71 CandidateURI cauri4 =
72 new CandidateURI(UURIFactory.getInstance("http://archive.org/zle"));
73 CrawlURI curi4 = new CrawlURI(cauri4, ordinalOrigin + 3);
74 curi4.setClassKey("foo");
75 curi4.setHolderCost(2);
76 byte[] key4 =
77 BdbMultipleWorkQueues.calculateInsertKey(curi4).getData();
78 CandidateURI cauri5 =
79 new CandidateURI(UURIFactory.getInstance("http://archive.org/gru"));
80 CrawlURI curi5 = new CrawlURI(cauri5, ordinalOrigin + 4);
81 curi5.setClassKey("foo");
82 curi5.setHolderCost(1);
83 byte[] key5 =
84 BdbMultipleWorkQueues.calculateInsertKey(curi5).getData();
85
86
87 assertTrue("lower ordinal sorting first (" + ordinalOrigin + ")",
88 Key.compareKeys(key1, key2, null) < 0);
89
90
91
92 assertTrue("lower directive sorting first (" + ordinalOrigin + ")",
93 Key.compareKeys(key3, key2, null) < 0);
94
95
96 assertTrue("lower cost sorting first (" + ordinalOrigin + ")", Key
97 .compareKeys(key5, key4, null) < 0);
98 }
99 }
100 }