    @Test
    void normalDiscoveryLoopTest() throws Exception {

        try {
            SmcpTechnology techHosting = new SmcpTechnology(mContextA);
            SmcpTechnology techBacking = new SmcpTechnology(mContextA);

            MyLightBulb localFe = new MyLightBulb();

            techHosting
                    .getServer()
                    .addLocalEndpoint(
                            techHosting
                                    .getLocalEndpointManager()
                                    .getLocalEndpointForScheme("loop"));
            techHosting.host(localFe);

            techHosting.getServer().start();

            DiscoveryQuery query =
                    techBacking
                            .createDiscoveryQueryBuilder()
                            .setLocalEndpoint(
                                    techBacking
                                            .getLocalEndpointManager()
                                            .getLocalEndpointForScheme("loop"))
                            .setTimeout(100, TimeUnit.MILLISECONDS)
                            .buildAndRun();

            tick(1);

            Set<Thing> results = query.get();

            assertFalse(results.isEmpty());
            assertEquals(1, results.size());

            Thing remoteFe = results.iterator().next();

            assertEquals(
                    localFe.getCachedProperty(BaseTrait.META_UID),
                    remoteFe.getCachedProperty(BaseTrait.META_UID));
        } catch (Throwable x) {
            dumpLogs();
            throw x;
        }
    }