import org.osgi.service.discovery.DiscoveredServiceNotification;
import org.osgi.service.discovery.DiscoveredServiceTracker;
public class FindInZooKeeperCustomizerTest extends TestCase {
public void testAddingServiceInterface() {
DiscoveredServiceTracker dst = new DiscoveredServiceTracker() {
public void serviceChanged(DiscoveredServiceNotification dsn) {}
};
ServiceReference sr = EasyMock.createMock(ServiceReference.class);
EasyMock.expect(sr.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA)).
andReturn(Collections.singleton(String.class.getName()));
EasyMock.expect(sr.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA)).
andReturn(null);
EasyMock.replay(sr);
DiscoveredServiceTracker dst2 = new DiscoveredServiceTracker() {
public void serviceChanged(DiscoveredServiceNotification dsn) {}
};
ServiceReference sr2 = EasyMock.createMock(ServiceReference.class);
EasyMock.expect(sr2.getProperty(DiscoveredServiceTracker.INTERFACE_MATCH_CRITERIA)).
andReturn(Arrays.asList(Integer.class.getName(), Comparable.class.getName()));
EasyMock.expect(sr2.getProperty(DiscoveredServiceTracker.FILTER_MATCH_CRITERIA)).
andReturn(null);
EasyMock.replay(sr2);
BundleContext bc = EasyMock.createMock(BundleContext.class);
EasyMock.expect(bc.getService(sr)).andReturn(dst);
EasyMock.expect(bc.getService(sr2)).andReturn(dst2);
EasyMock.replay(bc);
ZooKeeper zk = EasyMock.createMock(ZooKeeper.class);
zkExpectExists(zk, String.class.getName());
zkExpectExists(zk, Integer.class.getName());
zkExpectExists(zk, Comparable.class.getName());
EasyMock.expectLastCall();
EasyMock.replay(zk);
FindInZooKeeperCustomizer fc = new FindInZooKeeperCustomizer(bc, zk);
// ---------------------------------------------------------------
// Test the addingService APIs
// ---------------------------------------------------------------
assertEquals("Precondition failed", 0, fc.watchers.size());
fc.addingService(sr);
assertEquals(1, fc.watchers.size());
DiscoveredServiceTracker key = fc.watchers.keySet().iterator().next();
assertSame(dst, key);
List<InterfaceMonitor> dmList = fc.watchers.get(key);
assertEquals(1, dmList.size());
InterfaceMonitor dm = dmList.iterator().next();
assertNotNull(dm.listener);