public static List<Event> computeEventDiff(final Params params) {
        final List<Event> events = new ArrayList<>();

        emitPerNodeDiffEvents(createBaselineParams(params), events);
        emitWholeClusterDiffEvent(createBaselineParams(params), events);
        emitDerivedBucketSpaceStatesDiffEvents(params, events);
        return events;
    }
@Test
    void added_exhaustion_in_feed_block_resource_set_emits_node_event() {
        final EventFixture fixture = EventFixture.createForNodes(3)
                .clusterStateBefore("distributor:3 storage:3")
                .feedBlockBefore(ClusterStateBundle.FeedBlock.blockedWith(
                        "we're closed", setOf(exhaustion(1, "oil"))))
                .clusterStateAfter("distributor:3 storage:3")
                .feedBlockAfter(ClusterStateBundle.FeedBlock.blockedWith(
                        "we're still closed", setOf(exhaustion(1, "oil"), exhaustion(1, "cpu_brake_fluid"))));

        final List<Event> events = fixture.computeEventDiff();
        assertThat(events.size(), equalTo(1));
        assertThat(events, hasItem(allOf(
                eventForNode(storageNode(1)),
                nodeEventWithDescription("Added resource exhaustion: cpu_brake_fluid on node 1 [unknown hostname] is 80.0% full (the configured limit is 70.0%)"),
                nodeEventForBaseline())));
    }