예제 #1
0
        public Task WriteAsync(MachineStatusInflux data)
        {
            measurementsThatNeedToBeWrittenToDB.Add(data);

            measurementCache.Add(data);

            try
            {
                TrimCacheIfNeeded();
            }
            catch (Exception ex)
            {
            }

            return(Task.CompletedTask);
        }
예제 #2
0
        public async void LastOrDefaultWhereIs()
        {
            var testDB = $"{nameof(StatusRepoTests)}.{nameof(LastOrDefaultWhereIs)}";

            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 <MachineStatusInflux>();

            var IsCycling = false;

            for (int a = 0; a < 100; a++)
            {
                foreach (var machine in machines)
                {
                    var machineIsRunning = new MachineStatusInflux(machine)
                    {
                        IsCycling     = IsCycling,
                        IsInAutomatic = true,
                        IsFaulted     = false,
                        Time          = DateTime.UtcNow
                    };
                    await repo.MachineStatusRepo.WriteAsync(machineIsRunning);

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

            foreach (var machine in machines)
            {
                var dbresult = await repo.MachineStatusRepo.LastOrDefaultWhereIsAsync(machine.Line, machine.Name, true, true, false);

                var listResult = rows.LastOrDefault(x => x.Line == machine.Line && x.Name == machine.Name && x.IsCycling == true && x.IsInAutomatic == true && x.IsFaulted == false);


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

            repo.DropDB(testDB);
        }