25
25
def test_record_derived_fetch_records_new_fetch(self):
26
26
stats = FetchStatistics()
27
stats.record_derived_fetch("origin", "reference")
28
self.assertEqual({("origin", "reference"): 1}, stats.derived_fetches)
27
fetch = ("origin", "reference", "store")
28
stats.record_derived_fetch(*fetch)
29
self.assertEqual({fetch: 1}, stats.derived_fetches)
30
31
def test_record_derived_fetch_records_repeated_fetch(self):
31
32
stats = FetchStatistics()
32
stats.derived_fetches = {("origin", "reference"): 1}
33
stats.record_derived_fetch("origin", "reference")
34
self.assertEqual({("origin", "reference"): 2}, stats.derived_fetches)
33
fetch = ("origin", "reference", "store")
34
stats.derived_fetches = {fetch: 1}
35
stats.record_derived_fetch(*fetch)
36
self.assertEqual({fetch: 2}, stats.derived_fetches)
36
38
def test_merge_empty_does_nothing(self):
37
39
stats = FetchStatistics()
38
40
stats.original_fetches = {"origin": 1}
39
stats.derived_fetches = {("origin", "reference"): 1}
41
derived_fetch = ("origin", "reference", "store")
42
stats.derived_fetches = {derived_fetch: 1}
40
43
empty = FetchStatistics()
42
45
self.assertEqual({"origin": 1}, stats.original_fetches)
43
self.assertEqual({("origin", "reference"): 1}, stats.derived_fetches)
46
self.assertEqual({derived_fetch: 1}, stats.derived_fetches)
45
48
def test_merge_adds_counts(self):
46
49
stats = FetchStatistics()
47
50
other_stats = FetchStatistics()
48
51
other_stats.original_fetches = {"other_origin": 1}
49
other_stats.derived_fetches = {("other_origin", "reference"): 1}
52
derived_fetch = ("other_origin", "reference", "store")
53
other_stats.derived_fetches = {derived_fetch: 1}
50
54
stats.merge(other_stats)
51
55
self.assertEqual(other_stats.original_fetches, stats.original_fetches)
52
56
self.assertEqual(other_stats.derived_fetches, stats.derived_fetches)
54
58
def test_merge_leaves_existing_counts_in_place(self):
55
59
stats = FetchStatistics()
56
60
stats.original_fetches = {"origin": 1}
57
stats.derived_fetches = {("origin", "reference"): 1}
61
derived_fetch = ("origin", "reference", "store")
62
stats.derived_fetches = {derived_fetch: 1}
58
63
other_stats = FetchStatistics()
59
64
other_stats.original_fetches = {"other_origin": 1}
60
other_stats.derived_fetches = {("other_origin", "reference"): 1}
65
other_derived_fetch = ("other_origin", "reference", "store")
66
other_stats.derived_fetches = {other_derived_fetch: 1}
61
67
stats.merge(other_stats)
63
69
cumulative_original_fetches = {
67
73
cumulative_derived_fetches = {
68
("origin", "reference"): 1,
69
("other_origin", "reference"): 1,
75
other_derived_fetch: 1,
71
77
self.assertEqual(cumulative_original_fetches, stats.original_fetches)
72
78
self.assertEqual(cumulative_derived_fetches, stats.derived_fetches)
74
80
def test_merge_sums_counts(self):
75
81
stats = FetchStatistics()
76
82
stats.original_fetches = {"origin": 1}
77
stats.derived_fetches = {("origin", "reference"): 1}
83
derived_fetch = ("origin", "reference", "store")
84
stats.derived_fetches = {derived_fetch: 1}
78
85
other_stats = FetchStatistics()
79
86
other_stats.original_fetches = {"origin": 1}
80
other_stats.derived_fetches = {("origin", "reference"): 1}
87
other_stats.derived_fetches = {derived_fetch: 1}
81
88
stats.merge(other_stats)
83
90
self.assertEqual({"origin": 2}, stats.original_fetches)
84
self.assertEqual({("origin", "reference"): 2}, stats.derived_fetches)
91
self.assertEqual({derived_fetch: 2}, stats.derived_fetches)