Exemple #1
0
 /// <summary>
 /// Find discoverer.
 /// </summary>
 /// <param name="service"></param>
 /// <param name="discovererId"></param>
 /// <param name="ct"></param>
 /// <returns></returns>
 public static async Task <DiscovererModel> FindDiscovererAsync(
     this IDiscovererRegistry service, string discovererId,
     CancellationToken ct = default)
 {
     try {
         return(await service.GetDiscovererAsync(discovererId, ct));
     }
     catch (ResourceNotFoundException) {
         return(null);
     }
 }
Exemple #2
0
        /// <summary>
        /// Create cloud side discovery services
        /// </summary>
        /// <param name="registry"></param>
        /// <param name="client"></param>
        /// <param name="logger"></param>
        public DiscoveryMultiplexer(IDiscovererRegistry registry,
                                    IDiscovererClient client, ILogger logger)
        {
            _registry = registry ??
                        throw new ArgumentNullException(nameof(registry));
            _client = client ??
                      throw new ArgumentNullException(nameof(client));
            _logger = logger ??
                      throw new ArgumentNullException(nameof(logger));

            _discoverers = new List <string>();
            _timer       = new Timer(_ => Task.Run(OnTimerFiredAsync), null, 0, -1);
        }
        public void ListAllDiscoverersUsingQuery()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(null, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
        public void GetDiscovererThatExists()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var result = service.GetDiscovererAsync(discoverers.First().Id).Result;

                // Assert
                Assert.True(result.IsSameAs(discoverers.First()));
            }
        }
Exemple #5
0
        /// <summary>
        /// Returns all discoverer ids from the registry
        /// </summary>
        /// <param name="service"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        public static async Task <List <string> > ListAllDiscovererIdsAsync(
            this IDiscovererRegistry service, CancellationToken ct = default)
        {
            var discoverers = new List <string>();
            var result      = await service.ListDiscoverersAsync(null, null, ct);

            discoverers.AddRange(result.Items.Select(s => s.Id));
            while (result.ContinuationToken != null)
            {
                result = await service.ListDiscoverersAsync(result.ContinuationToken,
                                                            null, ct);

                discoverers.AddRange(result.Items.Select(s => s.Id));
            }
            return(discoverers);
        }
        /// <summary>
        /// List all discoverers
        /// </summary>
        /// <param name="service"></param>
        /// <param name="onlyServerState"></param>
        /// <param name="ct"></param>
        /// <returns></returns>
        public static async Task <List <DiscovererModel> > ListAllDiscoverersAsync(
            this IDiscovererRegistry service, bool onlyServerState = false,
            CancellationToken ct = default)
        {
            var discoverers = new List <DiscovererModel>();
            var result      = await service.ListDiscoverersAsync(null, onlyServerState, null, ct);

            discoverers.AddRange(result.Items);
            while (result.ContinuationToken != null)
            {
                result = await service.ListDiscoverersAsync(result.ContinuationToken,
                                                            onlyServerState, null, ct);

                discoverers.AddRange(result.Items);
            }
            return(discoverers);
        }
        public void QueryDiscoverersByDiscoveryMode()
        {
            CreateDiscovererFixtures(out var site, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    Discovery = DiscoveryMode.Network
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == discoverers.Count(x => x.Discovery == DiscoveryMode.Network));
            }
        }
        public void GetDiscovererThatDoesNotExist()
        {
            CreateDiscovererFixtures(out _, out _, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var t = service.GetDiscovererAsync("test");

                // Assert
                Assert.NotNull(t.Exception);
                Assert.IsType <AggregateException>(t.Exception);
                Assert.IsType <ResourceNotFoundException>(t.Exception.InnerException);
            }
        }
        public void QueryDiscoverersByNoneExistantSiteId()
        {
            CreateDiscovererFixtures(out _, out _, out var modules, true);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    SiteId = "test"
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == 0);
            }
        }
Exemple #10
0
        public void QueryDiscoverersBySiteId()
        {
            CreateDiscovererFixtures(out var site, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose()) {
                mock.Provide <IIoTHubTwinServices>(IoTHubServices.Create(modules));
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    SiteId = site
                }, false, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
Exemple #11
0
        public void ListAllDiscoverersUsingQuery()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(null, null).Result;

                // Assert
                Assert.True(discoverers.IsSameAs(records.Items));
            }
        }
Exemple #12
0
        public void GetDiscovererThatExists()
        {
            CreateDiscovererFixtures(out _, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var result = service.GetDiscovererAsync(discoverers.First().Id).Result;

                // Assert
                Assert.True(result.IsSameAs(discoverers.First()));
            }
        }
Exemple #13
0
        public void GetDiscovererThatDoesNotExist()
        {
            CreateDiscovererFixtures(out _, out _, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var t = service.GetDiscovererAsync("test");

                // Assert
                Assert.NotNull(t.Exception);
                Assert.IsType <AggregateException>(t.Exception);
                Assert.IsType <ResourceNotFoundException>(t.Exception.InnerException);
            }
        }
Exemple #14
0
        public void QueryDiscoverersByNoneExistantSiteId()
        {
            CreateDiscovererFixtures(out _, out _, out var modules, true);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    SiteId = "test"
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == 0);
            }
        }
Exemple #15
0
        public void QueryDiscoverersByDiscoveryMode()
        {
            CreateDiscovererFixtures(out var site, out var discoverers, out var modules);

            using (var mock = AutoMock.GetLoose(builder => {
                var hub = IoTHubServices.Create(modules);
                builder.RegisterType <NewtonSoftJsonConverters>().As <IJsonSerializerConverterProvider>();
                builder.RegisterType <NewtonSoftJsonSerializer>().As <IJsonSerializer>();
                builder.RegisterInstance(hub).As <IIoTHubTwinServices>();
            })) {
                IDiscovererRegistry service = mock.Create <DiscovererRegistry>();

                // Run
                var records = service.QueryDiscoverersAsync(new DiscovererQueryModel {
                    Discovery = DiscoveryMode.Network
                }, null).Result;

                // Assert
                Assert.True(records.Items.Count == discoverers.Count(x => x.RequestedMode == DiscoveryMode.Network));
            }
        }
Exemple #16
0
 /// <summary>
 /// Create controller for discovery services
 /// </summary>
 /// <param name="discoverers"></param>
 /// <param name="events"></param>
 public DiscoverersController(IDiscovererRegistry discoverers,
                              IGroupRegistration events)
 {
     _discoverers = discoverers;
     _events      = events;
 }
 /// <summary>
 /// Create controller for discovery services
 /// </summary>
 /// <param name="discoverers"></param>
 public DiscoveryController(IDiscovererRegistry discoverers)
 {
     _discoverers = discoverers;
 }