예제 #1
0
        static async Task Main(string[] args)
        {
            var options = ReadOptions(args);
            var logger  = Log.ForContext <Program>();

            logger.Information($"Starting Alien reader protocol simulator on {options.ListenOn}");
            var readerEndpoint = IPEndPoint.Parse(options.ListenOn);
            var simulator      = new SimulatorListener(readerEndpoint);
            var tagListHandler = new TagListHandler(options);

            simulator.TagListHandler = tagListHandler.Handle;
            var tags = options.KnownTags
                       .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Select(x => new Tag {
                TagId = x, DiscoveryTime = DateTime.UtcNow, LastSeenTime = DateTime.UtcNow, ReadCount = 1
            })
                       .ToArray();

            if (options.RandomTags)
            {
                logger.Information($"Will return random tags");
            }
            else
            {
                logger.Information($"Found {tags.Length} tags in options");
            }
            tagListHandler.ReturnContinuos(tags);
            logger.Information($"Waiting for connections on {simulator.ListenEndpoint}, press CTRL+C to stop");
            Console.CancelKeyPress += (sender, args) => simulator.Dispose();
            await simulator.ListenTask;
        }
예제 #2
0
 public HardwareTests()
 {
     sim   = new SimulatorListener();
     proto = new AlienReaderProtocol(baseTimeout, baseTimeout * 2);
     proto.ConnectAndLogin(sim.Host, sim.Port, "alien", "password").Wait(baseTimeout * 2).ShouldBeTrue();
     reader = proto.Api;
 }
 public AlienReaderFactsWithLogin()
 {
     logger = LoggerIndexer.GetCurrentClassLogger();
     sim    = new SimulatorListener();
     proto  = new AlienReaderProtocol(baseTimeout, baseTimeout * 2);
     proto.ConnectAndLogin(sim.Host, sim.Port, "alien", "password").Wait(baseTimeout * 2).ShouldBeTrue();
     reader = proto.Api;
 }
예제 #4
0
 public TagStreamListenerTests()
 {
     sim   = new SimulatorListener();
     proto = new AlienReaderProtocol(receiveTimeout: int.MaxValue);
     proto.ConnectAndLogin(sim.Host, sim.Port, "alien", "password").Wait(2000).ShouldBeTrue();
     proto.StartTagPolling(tagStream).Wait(2000).ShouldBeTrue();
     reader = proto.Api;
     tagStream.Subscribe(tags.Add, ex => throw ex, () => completed = true);
     proto.TagPoller.UnparsedMessages.Subscribe(msgs.Add);
 }
예제 #5
0
        public TagListHandler Build(bool enableRfid = true)
        {
            var readerEndpoint = IPEndPoint.Parse("127.0.0.1:0");
            var simulator      = new SimulatorListener(readerEndpoint);
            var tagListHandler = new TagListHandler();

            simulator.TagListHandler = tagListHandler.Handle;
            var serializedConnectionString = $"Protocol = Alien; Network = {simulator.ListenEndpoint}";
            var settings = checkpointRepository.GetRfidOptions();

            settings.Enabled          = enableRfid;
            settings.ConnectionString = serializedConnectionString;
            checkpointRepository.SetRfidOptions(settings);
            return(tagListHandler);
        }
예제 #6
0
        public TagListHandler Build()
        {
            var readerEndpoint = IPEndPoint.Parse("127.0.0.1:0");
            var simulator      = new SimulatorListener(readerEndpoint);
            var tagListHandler = new TagListHandler();

            simulator.TagListHandler = tagListHandler.Handle;
            var serializedConnectionString = $"Protocol = Alien; Network = {simulator.ListenEndpoint}";
            var settings = storageService.GetRfidOptions();

            settings.Enabled          = true;
            settings.ConnectionString = serializedConnectionString;
            storageService.SetRfidOptions(settings);
            return(tagListHandler);
        }
예제 #7
0
        public ReaderFixture()
        {
            Settings = new ConfigurationBuilder()
                       .AddJsonFile("alien-test-settings.json", true)
                       .AddEnvironmentVariables()
                       .Build()
                       .Get <AlienTestSettings>();
            if (Settings.UseHardwareReader)
            {
                UseEndpoint(Settings.HardwareReaderAddress);
            }
            else
            {
                Simulator = new SimulatorListener(UseEndpoint(Settings.ReaderSimAddress));
                Port      = Simulator.ListenEndpoint.Port;
            }

            Proto = new AlienReaderProtocol();
            Proto.ConnectAndLogin(Host, Port, "alien", "password")
            .Wait(AlienReaderProtocol.DefaultConnectTimeout).Should().BeTrue();
        }
예제 #8
0
 public AlienReaderProtocolTests()
 {
     sim   = new SimulatorListener();
     proto = new AlienReaderProtocol();
     proto.ConnectAndLogin(sim.Host, sim.Port, "alien", "password").Wait(2000).ShouldBeTrue();
 }
예제 #9
0
        public void ShouldSetHandlerProperly()
        {
            var sim = new SimulatorListener(IPEndPoint.Parse("127.0.0.1:20023"));

            sim.TagListHandler = () => "";
        }
예제 #10
0
 public ReconnectionTests()
 {
     sim = new SimulatorListener();
 }