### Question:
CustomChord implements AddressableNetwork { @Override public void start(final ExecutorService executor) { executor.submit(new CcBoss(executor, this.view, this.maintenanceInterval, this.taskQueue)); } CustomChord(final Address self, final int peerCapacity, final long maintenanceInterval); @Override Address getSelf(); @Override Pair<Address, Address> getDomain(); @Override boolean isEmpty(); @Override boolean dominates(final Address target); @Override boolean moreAppropriate(final Address target, final Address competitor); @Override AddressedPeer getRoutingDestination(final Address target); @Override List<AddressedPeer> getRoutingNeighbors(final int maxHop); @Override List<AddressedPeer> getBackupNeighbors(final int maxHop); @Override List<AddressedPeer> getImportantPeers(); @Override List<AddressedPeer> getShortcuts(); @Override List<AddressedPeer> getPeers(); @Override boolean addPeer(final AddressedPeer peer); @Override Address removePeer(final InetSocketAddress peer); @Override void start(final ExecutorService executor); @Override NetworkTask take(); @Override NetworkTask takeIfExists();  }### Answer:
@Test public void testBoot() throws Exception { final int capacity = 100; final long maintenanceInterval = Duration.SECOND; final Random random = new Random(); final Address self = AddressTest.newRandomInstance(random); final CustomChord instance = new CustomChord(self, capacity, maintenanceInterval); final ExecutorService executor = Executors.newCachedThreadPool(); instance.start(executor); Thread.sleep(100); executor.shutdownNow(); Assert.assertTrue(executor.awaitTermination(Duration.SECOND, TimeUnit.MILLISECONDS)); }