JobNodeStorage { public void addConnectionStateListener(final ConnectionStateListener listener) { getClient().getConnectionStateListenable().addListener(listener); } JobNodeStorage(final CoordinatorRegistryCenter regCenter, final String jobName); boolean isJobNodeExisted(final String node); boolean isJobRootNodeExisted(); String getJobNodeData(final String node); String getJobNodeDataDirectly(final String node); List<String> getJobNodeChildrenKeys(final String node); String getJobRootNodeData(); void createJobNodeIfNeeded(final String node); void removeJobNodeIfExisted(final String node); void fillJobNode(final String node, final Object value); void fillEphemeralJobNode(final String node, final Object value); void updateJobNode(final String node, final Object value); void replaceJobNode(final String node, final Object value); void replaceJobRootNode(final Object value); void executeInTransaction(final TransactionExecutionCallback callback); void executeInLeader(final String latchNode, final LeaderExecutionCallback callback); void addConnectionStateListener(final ConnectionStateListener listener); void addDataListener(final CuratorCacheListener listener); long getRegistryCenterTime();  }
@Test public void assertAddConnectionStateListener() { CuratorFramework client = mock(CuratorFramework.class); @SuppressWarnings("unchecked") Listenable<ConnectionStateListener> listeners = mock(Listenable.class); ConnectionStateListener listener = mock(ConnectionStateListener.class); when(client.getConnectionStateListenable()).thenReturn(listeners); when(regCenter.getRawClient()).thenReturn(client); jobNodeStorage.addConnectionStateListener(listener); verify(listeners).addListener(listener); }