### Question:
HelixNotifier implements Notifier<String> { HelixNotifier(HelixPropertyStore<ZNRecord> helixStore) { if (helixStore == null) { throw new IllegalArgumentException("helixStore cannot be null."); } this.helixStore = helixStore; } HelixNotifier(HelixPropertyStore<ZNRecord> helixStore);  HelixNotifier(String zkServers, HelixPropertyStoreConfig storeConfig); @Override boolean publish(String topic, String message); @Override void subscribe(String topic, TopicListener<String> topicListener); @Override void unsubscribe(String topic, TopicListener<String> topicListener);  }### Answer:
@Test public void testHelixNotifier() throws Exception { helixNotifier.subscribe(refTopics.get(0), listeners.get(0)); latch0.set(new CountDownLatch(1)); helixNotifier.publish(refTopics.get(0), refMessages.get(0)); awaitLatchOrTimeout(latch0.get(), LATCH_TIMEOUT_MS); assertEquals("Received topic is different from expected", refTopics.get(0), receivedTopicsByListener0.get(0)); assertEquals("Received message is different from expected", refMessages.get(0), receivedMessagesByListener0.get(0)); resetListeners(); latch0.set(new CountDownLatch(1)); helixNotifier.publish(refTopics.get(0), refMessages.get(1)); awaitLatchOrTimeout(latch0.get(), LATCH_TIMEOUT_MS); assertEquals("Received topic is different from expected", refTopics.get(0), receivedTopicsByListener0.get(0)); assertEquals("Received message is different from expected", refMessages.get(1), receivedMessagesByListener0.get(0)); resetListeners(); helixNotifier.subscribe(refTopics.get(1), listeners.get(0)); latch0.set(new CountDownLatch(1)); helixNotifier.publish(refTopics.get(1), refMessages.get(0)); awaitLatchOrTimeout(latch0.get(), LATCH_TIMEOUT_MS); assertEquals("Received topic is different from expected", refTopics.get(1), receivedTopicsByListener0.get(0)); assertEquals("Received message is different from expected", refMessages.get(0), receivedMessagesByListener0.get(0)); }