private void ManageFormats()
 {
     // copy formats from sensor service
     _overlayEntries.ForEach(entry =>
                             entry.ValueUnitFormat = _sensorService.GetSensorOverlayEntry(entry.Identifier)?.ValueUnitFormat);
     _overlayEntries.ForEach(entry =>
                             entry.ValueAlignmentAndDigits = _sensorService.GetSensorOverlayEntry(entry.Identifier)?.ValueAlignmentAndDigits);
     SetOnlineMetricFormats();
     SetOnlineMetricsIsNumericState();
     SetRTSSMetricFormats();
     SetRTSSMetricIsNumericState();
     SetHardwareIsNumericState();
     _overlayEntries.ForEach(entry => entry.FormatChanged = true);
 }
Example #2
0
        public void Employees3()
        {
            var threadCnt  = 20;
            var iterations = 100;
            var cnt        = 100;

            var data    = new BlockingCollection <Employee>();
            var deleted = new BlockingCollection <Employee>();

            for (var i = 0; i < threadCnt; i++)
            {
                for (var j = 0; j < cnt; j++)
                {
                    var emp = makeEmployee(new GDID((uint)(i + 1), 0, (ulong)j));
                    emp.Department = "DPT" + (i % 2).ToString();
                    data.Add(emp);
                }
            }

            // initial population
            using (var ds = makeDataStore())
            {
                data.ForEach(e => ds.Insert(e));
            }

            Parallel.For(0, threadCnt, (i) =>
            {
                using (var ds = makeDataStore())
                {
                    var department = "DPT" + (i % 2).ToString();
                    for (var ii = 0; ii < iterations; ii++)
                    {
                        var fetchQry = new Query <Employee>("CRUD.Queries.Employee.FetchByDepartment")
                        {
                            new Query.Param("pDepartment", department)
                        };
                        var stored = ds.LoadEnumerable(fetchQry);

                        if (stored.Any())
                        {
                            var idx    = Ambient.Random.NextScaledRandomInteger(0, stored.Count());
                            var toLoad = stored.ElementAt(idx);
                            var emp    = data.First(e => e.GDID == toLoad.GDID);

                            var fetchOne = new Query <Employee>("CRUD.Queries.Employee.FetchByGDID")
                            {
                                new Query.Param("pGDID", toLoad.GDID)
                            };
                            var row = ds.LoadDoc(fetchOne);
                            if (row == null)
                            {
                                continue; // element was deleted from database by another thread
                            }
                            Aver.IsTrue(emp.Equals(row));

                            // random deletion
                            if (Ambient.Random.NextScaledRandomInteger(0, 2) == 1)
                            {
                                ds.Delete(row);
                                deleted.Add(row);
                            }
                        }

                        // random insertion
                        if (Ambient.Random.NextScaledRandomInteger(0, 2) == 1)
                        {
                            var newRow        = makeEmployee(new GDID((uint)(i + 1), 0, (ulong)(cnt + ii + 1)));
                            newRow.Department = department;
                            data.Add(newRow);
                            ds.Insert(newRow);
                        }
                    }
                }
            });

            var resultData = new List <Employee>();

            foreach (var emp in data)
            {
                if (!deleted.Any(e => e.GDID == emp.GDID))
                {
                    resultData.Add(emp);
                }
            }

            using (var ds = makeDataStore())
            {
                var fetchQry  = new Query <Employee>("CRUD.Queries.Employee.FetchAll");
                var employees = ds.LoadEnumerable(fetchQry);
                Aver.AreEqual(resultData.Count(), employees.Count());

                foreach (var emp in resultData)
                {
                    var row = employees.FirstOrDefault(e => e.GDID == emp.GDID);
                    Aver.IsNotNull(row);
                    Aver.IsTrue(emp.Equals(row));
                }
            }
        }