ContentNodeStats { private void merge(ContentNodeStats stats, int factor) { for (Map.Entry<String, BucketSpaceStats> entry : stats.bucketSpaces.entrySet()) { BucketSpaceStats statsToUpdate = bucketSpaces.get(entry.getKey()); if (statsToUpdate == null && factor == 1) { statsToUpdate = BucketSpaceStats.empty(); bucketSpaces.put(entry.getKey(), statsToUpdate); } if (statsToUpdate != null) { statsToUpdate.merge(entry.getValue(), factor); } } } ContentNodeStats(StorageNode storageNode);  ContentNodeStats(int index);  ContentNodeStats(int index, Map<String, BucketSpaceStats> bucketSpaces); int getNodeIndex(); void add(ContentNodeStats stats); void subtract(ContentNodeStats stats); BucketSpaceStats getBucketSpace(String bucketSpace); Map<String, BucketSpaceStats> getBucketSpaces(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test public void bucket_space_stats_can_transition_from_valid_to_invalid() { BucketSpaceStats stats = BucketSpaceStats.of(5,1); assertTrue(stats.valid()); stats.merge(BucketSpaceStats.invalid(), 1); assertFalse(stats.valid()); assertEquals(BucketSpaceStats.invalid(5, 1), stats); }
@Test public void bucket_space_stats_can_transition_from_invalid_to_valid() { BucketSpaceStats stats = BucketSpaceStats.invalid(); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.of(5, 1), 1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.invalid(), -1); assertTrue(stats.valid()); assertEquals(BucketSpaceStats.of(5, 1), stats); }
@Test public void bucket_space_stats_tracks_multiple_layers_of_invalid() { BucketSpaceStats stats = BucketSpaceStats.invalid(); stats.merge(BucketSpaceStats.invalid(), 1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.invalid(), 1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.of(5, 1), 1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.invalid(), -1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.invalid(), -1); assertFalse(stats.valid()); stats.merge(BucketSpaceStats.invalid(), -1); assertTrue(stats.valid()); assertEquals(BucketSpaceStats.of(5, 1), stats); }