コード例 #1
0
        /*
         * public override async Task EvaluatedAsFalse(RuleIsRunningData data)
         * {
         *  await Write(data, false);
         * }
         *
         * public override async Task EvaluatedAsTrue(RuleIsRunningData data)
         * {
         *  await Write(data, true);
         * }
         */

        private async Task Write(RuleIsRunningData data, bool isRunning)
        {
            try
            {
                MachineIsRunningInflux row = new MachineIsRunningInflux(data.Machine)
                {
                    Time      = data.When,
                    IsRunning = isRunning
                };

                await _repository.MachineIsRunningRepo.WriteAsync(row);
            }
            catch (TaskCanceledException ex)
            {
                _logger?.Here(nameof(RuleActionWriteIsRunning), Description).Warning("Attempt to Write IsRunning was Canceled, Value not written.");
            }
        }
コード例 #2
0
        public async void GetLastOrDefault()
        {
            var testDB = $"{nameof(IsRunningRepoTests)}.{nameof(GetLastOrDefault)}";

            var repo = new MachineRepositoryCache("192.168.1.208", "TestRunner", "1234", TimeSpan.FromMilliseconds(5000), testDB);

            if (repo.DoesDBExist(testDB))
            {
                repo.DropDB(testDB);
            }

            repo.CreateDB(testDB);



            var machines = new List <MachineInfoInflux>();

            for (int i = 0; i < 40; i++)
            {
                var machine = new MachineInfoInflux()
                {
                    MAC        = $"MAC{i+1}",
                    IPAddress  = $"IP{i+1}",
                    Department = "Dept1",
                    Name       = "Press",
                    Line       = $"Y-1-{i+1}"
                };

                machines.Add(machine);
            }

            var rows = new List <MachineIsRunningInflux>();

            var IsRunning = false;

            for (int a = 0; a < 100; a++)
            {
                foreach (var machine in machines.Take(36))
                {
                    var machineIsRunning = new MachineIsRunningInflux(machine)
                    {
                        IsRunning = IsRunning,
                        Time      = DateTime.UtcNow
                    };
                    await repo.MachineIsRunningRepo.WriteAsync(machineIsRunning);

                    rows.Add(machineIsRunning);
                    IsRunning = !IsRunning;
                }
            }

            foreach (var machine in machines)
            {
                var dbresult = await repo.MachineIsRunningRepo.LastOrDefaultAsync(machine.Line, machine.Name);

                var listResult = rows.LastOrDefault(x => x.Line == machine.Line && x.Name == machine.Name);
                if (listResult is null || dbresult is null)
                {
                    continue;
                }

                dbresult.WithDeepEqual(listResult).Assert();
            }

            repo.DropDB(testDB);
        }