コード例 #1
0
ファイル: Program.cs プロジェクト: DMokhnatkin/task1
        static void ReferToService(string serviceAddress)
        {
            try
            {
                if (prev == null)
                {
                    prev = Emulator.GetRandom(_terminalId);
                }
                List <IMetering> data = new List <IMetering>();
                for (int i = 0; i < points; i++)
                {
                    prev = Emulator.GetNext(prev, new TimeSpan(0, 0, 0, 0, timeout / points), (float)new Random().NextDouble() * 60);
                    data.Add(prev);
                }

                AuthorizationServiceProxy authorizationProxy = new AuthorizationServiceProxy();
                authorizationProxy.Login(_terminalId);
                DataServiceProxy dataProxy = new DataServiceProxy();
                dataProxy.SendData(_terminalId, data.Select(x => new MeteringDto(x)).ToList());
                logger.Info("Data sent");
            }
            catch (Exception e)
            {
                logger.Warn("Can't call method: {0}", e.Message);
            }
        }
コード例 #2
0
        /// <summary>
        /// When a user changes the device we want to change the device the meter is associating with.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void inputDevices_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedItem = ((ComboBox)sender).SelectedItem;

            if (selectedItem == null)
            {
                return;
            }
            this.selectedDevice = selectedItem.ToString();
            Console.WriteLine(selectedDevice);
            if (meterController != null)
            {
                meterController.Dispose();
            }
            try
            {
                meterController = new Metering(selectedDevice);
                meterController.DeviceUpdated += meter_DeviceUpdated;
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show("Could not capture this device", "Error");
                Console.WriteLine(ex.StackTrace);
                setDefaultDevice();
            }
        }
コード例 #3
0
        public async Task <IMetering> GetLastMetering(string terminalId)
        {
            // Get last metering
            MeteringDAO lastMetering = await _context.Meterings
                                       .Include(x => x.SensorValueRelations)
                                       .OrderByDescending(x => x.Time)
                                       .FirstOrDefaultAsync(x => x.TerminalId == terminalId);

            // Map to Metering model
            Metering res = new Metering()
            {
                TerminalId = lastMetering.TerminalId,
                Latitude   = lastMetering.Latitude,
                Longitude  = lastMetering.Longitude,
                Time       = lastMetering.Time,
            };

            // Get sensor vals for last metering
            var sensorVals = await _context.MeteringSensorRelations
                             .Include(x => x.Metering)
                             .Include(x => x.SensorValue)
                             .Where(x => x.Metering.Id == lastMetering.Id)
                             .ToListAsync();

            foreach (var sv in sensorVals)
            {
                Property prop = DynamicPropertyManagers.Sensors.GetProperty(sv.PropertyName);
                res.SensorValues.SetValue(prop, DAOHelper.ByteArrayToObject(prop.TypeOfValue, sv.SensorValue.Value));
            }
            return(res);
        }
コード例 #4
0
        public void TenantSpecificCounterTest()
        {
            var meter = Metering.GetMeterForTenant(_tenant);

            meter.Counter("counter-stat", 1);
            meter.Counter("counter-stat", 2);
            meter.Counter("counter-stat", 3);
        }
コード例 #5
0
        public void GlobalCounterTest()
        {
            var meter = Metering.GetGlobalMeter();

            meter.Counter("counter-stat", 1);
            meter.Counter("counter-stat", 2);
            meter.Counter("counter-stat", 3);
        }
コード例 #6
0
        public override async Task OnActionExecutingAsync(HttpActionContext actionContext,
                                                          CancellationToken cancellationToken)
        {
            _meter     = Metering.GetGlobalMeter();
            _stopwatch = new Stopwatch();
            _stopwatch.Start();
            AddCountMetric("count");       //meters the count of api call

            await base.OnActionExecutingAsync(actionContext, cancellationToken);
        }
コード例 #7
0
        protected override void Invoke(ManagedTestCase testCase, object testobject, MethodInfo method, object[] args, string name)
        {
            TaskoMeterTestContext ctx = (TaskoMeterTestContext)testCase.Context;

            Action invoke = delegate() { method.Invoke(testobject, args); };

            var t = Metering.MeasureInteractively(
                invoke,
                ctx.Repetitions,
                invoke,
                ctx.WarmupRepetitions,
                name);

            t.Join();
        }
コード例 #8
0
ファイル: MeteringDto.cs プロジェクト: DMokhnatkin/task1
        public IMetering ToBo()
        {
            Metering res = new Metering();

            res.TerminalId = TerminalId;
            res.Time       = Time;
            res.Latitude   = Latitude;
            res.Longitude  = Longitude;

            foreach (var z in _sensorValues)
            {
                res.SensorValues.SetValue(
                    DynamicPropertyManagers.Sensors.GetProperty(z.Key),
                    z.Value);
            }
            return(res);
        }
コード例 #9
0
ファイル: Emulator.cs プロジェクト: DMokhnatkin/task1
        public static Metering GetRandom(string terminalId, float maxTimeOffsetMs = 10E4f, float maxSpeedKmh = 90f, float maxMileageKm = 500f)
        {
            Random rand = new Random();
            var    res  = new Metering()
            {
                TerminalId = terminalId,
                Latitude   = (float)rand.NextDouble() * 180 - 90,
                Longitude  = (float)rand.NextDouble() * 360 - 180,
                Time       = DateTime.Now.AddMilliseconds(rand.NextDouble() * maxTimeOffsetMs)
            };

            res.SensorValues.SetValue(DynamicPropertyManagers.Sensors.SpeedKmh, (float)rand.NextDouble() * maxSpeedKmh);
            res.SensorValues.SetValue(DynamicPropertyManagers.Sensors.MileageKm, (float)rand.NextDouble() * maxMileageKm);
            res.SensorValues.SetValue(DynamicPropertyManagers.Sensors.IsEngineRunning, rand.Next() % 2 == 0);

            return(res);
        }
コード例 #10
0
 private void initalizeMeter()
 {
     if (selectedDevice_ != null)
     {
         if (meterController != null)
         {
             meterController.Dispose();
         }
         try
         {
             meterController = new Metering(selectedDevice_);
             meterController.DeviceUpdated += meterController_DeviceUpdated;
         }
         catch (ArgumentException ex)
         {
             MessageBox.Show("Could not capture this device", "Error");
             //setDefaultDirectDevice();
             setDefaultDevice();
         }
     }
 }
コード例 #11
0
        public MetricsFixture()
        {
            var nvc = new NameValueCollection()
            {
                { "host", "192.168.10.182" },
                { "port", "8125" },
                { "mtu", "1432" },
                { "batchingInterval", "1" },
                { "applyPrefix", "Y" },
                { "prefix", "testTenant" },
            };
            var config = new Mock <IConfigurationProvider>();

            config
            .Setup(c => c.GetTenantConfigurationAsNameValueCollectionAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(nvc);
            config
            .Setup(c => c.GetGlobalConfigurationAsNameValueCollectionAsync(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(nvc);
            _configuration = config.Object;
            Metering.ConfigureMetrics(new MetricsFactory(_configuration, _appName));
        }
コード例 #12
0
ファイル: MyData.cs プロジェクト: chashik/InsertionTest
        public MyData(int amount)
        {
            Meterings = new Metering[amount];
            var tbegin = DateTime.Now;
            var tend   = tbegin.AddDays(1);
            var meter  = 5E-1;

            for (var i = 0; i < amount; i++)
            {
                Meterings[i] = new Metering()
                {
                    IDOBJECT           = i,
                    IDOBJECT_AVERAGE   = i,
                    IDOBJECT_AGGREGATE = i,
                    IDTYPE_OBJECT      = i,
                    STATUS             = i,
                    TIME_BEGIN         = tbegin,
                    TIME_END           = tend,
                    VALUE_METERING     = meter
                }
            }
            ;
        }
コード例 #13
0
        private void HandleApiMetering(LogEventArgs logEventArgs)
        {
            if (string.IsNullOrWhiteSpace(ApiMeterPrefix))
            {
                return;
            }

            IMeter meter = Metering.GetGlobalMeter();

            if (meter == null)
            {
                return;
            }

            int httpStatusCode = (int)logEventArgs.HttpStatusCode;

            if (httpStatusCode >= 500)
            {
                meter.Meter($"{ApiMeterPrefix}.failure");
            }
            meter.Meter($"{ApiMeterPrefix}.count");
            meter.Timer($"{ApiMeterPrefix}.latency", TimeSpan.FromSeconds(logEventArgs.TimeTakenInSeconds));
        }
コード例 #14
0
ファイル: Emulator.cs プロジェクト: DMokhnatkin/task1
        public static Metering GetNext(Metering prev, TimeSpan dTime, float speed)
        {
            Metering next = new Metering();

            next.TerminalId = prev.TerminalId;

            // MileageKm
            float dMil = speed * (float)dTime.TotalHours;

            //Earth’s radius, sphere
            float R = 6378137;

            //offsets in meters
            float q  = (float)(new Random()).NextDouble();
            float dn = q * dMil * 1000;
            float de = (1 - q) * dMil * 1000;

            //Coordinate offsets in radians
            float dLat = dn / R;
            float dLon = (float)(de / (R * Math.Cos(Math.PI * prev.Latitude / 180)));

            //OffsetPosition, decimal degrees
            float latO = prev.Latitude + dLat * 180 / (float)Math.PI;
            float lonO = prev.Longitude + dLon * 180 / (float)Math.PI;

            next.Latitude  = latO;
            next.Longitude = lonO;
            next.Time      = prev.Time + dTime;

            next.SensorValues.SetValue(DynamicPropertyManagers.Sensors.SpeedKmh, speed);
            next.SensorValues.SetValue(
                DynamicPropertyManagers.Sensors.MileageKm,
                (float)prev.SensorValues.GetValue(DynamicPropertyManagers.Sensors.MileageKm) + dMil);
            next.SensorValues.SetValue(DynamicPropertyManagers.Sensors.IsEngineRunning, speed > 0);

            return(next);
        }
コード例 #15
0
        public static void Seed(this ModelBuilder blder)
        {
            var @base = 10;

            var reviews   = new string[] { "Good service, I will happily work with them again.", "Well, my mark is saying all about this service.", "I hope we will meet again. Good guys." };
            var pedals    = GetPedals(@base, @base * 0).ToArray();
            var amps      = GetAmplifiers(@base, @base * 1).ToArray();
            var guitars   = GetGuitars(@base, @base * 2).ToArray();
            var locations = GetLocations().ToArray();
            var devices   = GetDevices().ToArray();

            blder.Entity <Company>()
            .HasData(
                new Company()
            {
                Id    = -1,
                Name  = "F****r's company",
                Image = "Comp.png"
            }
                );
            blder.Entity <OrderStatus>().HasData(
                new OrderStatus()
            {
                Id   = -1,
                Name = "In confirmaion"
            },
                new OrderStatus()
            {
                Id   = -2,
                Name = "Confirmed"
            },
                new OrderStatus()
            {
                Id   = -3,
                Name = "In Process"
            },
                new OrderStatus()
            {
                Id   = -4,
                Name = "Successfully Processed"
            },
                new OrderStatus()
            {
                Id   = -5,
                Name = "Failure"
            },
                new OrderStatus()
            {
                Id   = -6,
                Name = "Freezed"
            }
                );

            blder.Entity <OrderType>().HasData(
                new OrderType()
            {
                Id      = -1,
                Minutes = 30,
                Name    = "Very Urgent"
            },
                new OrderType()
            {
                Id      = -2,
                Minutes = 60,
                Name    = "Urgent"
            },
                new OrderType()
            {
                Id      = -3,
                Minutes = 120,
                Name    = "So-so"
            },
                new OrderType()
            {
                Id      = -4,
                Minutes = 240,
                Name    = "Just be here today"
            }
                );

            blder.Entity <User>()
            .HasData(
                new User
            {
                Id       = "qwjehfpkjnvdpjwn3pro",
                Email    = "*****@*****.**",
                UserName = "******"
            }
                );

            blder.Entity <CompanyUser>()
            .HasData
            (
                new CompanyUser()
            {
                CompanyId = -1,
                UserId    = "1"
            },
                new CompanyUser()
            {
                CompanyId = -1,
                UserId    = "0"
            }

            );

            blder.Entity <Service>()
            .HasData(
                new Service
            {
                Id      = -1,
                Address = "Jopa mira",
                Image   = "service",
                Name    = "Fuckers and co.",
                Phone   = "+38(095)233-46-21",
                About   = "We are the most advanced company in service field and repairing. Our expierence - 3 years of quality work.",
                City    = "Odessa"
            }
                );

            blder.Entity <ServiceUser>()
            .HasData(
                new ServiceUser()
            {
                ServiceId = -1,
                UserId    = "service"
            },
                new ServiceUser()
            {
                ServiceId = -1,
                UserId    = "worker"
            }
                );

            blder.Entity <Message>().HasData(
                new Message()
            {
                Id     = -1,
                UserId = "qwjehfpkjnvdpjwn3pro",
                ChatId = -1,
                Date   = DateTime.Now,
                Text   = "Hello, friend!"
            },
                new Message()
            {
                Id     = -2,
                UserId = "qwjehfpkjnvdpjwn3pro",
                ChatId = -1,
                Date   = DateTime.Now,
                Text   = "I just wanted to ask you something."
            }
                );


            blder.Entity <Review>().HasData(
                new Review()
            {
                Id        = -1,
                CompanyId = -1,
                Mark      = 3,
                ServiceId = -1,
                Text      = "Not too good, not too bad.",
                UserId    = "1"
            }
                );

            blder.Entity <DeviceType>()
            .HasData(
                new DeviceType()
            {
                Id   = -1,
                Name = "Temperature"
            },
                new DeviceType()
            {
                Id   = -2,
                Name = "Pressure"
            }
                );

            blder.Entity <Device>()
            .HasData(
                new Device()
            {
                Id         = -1,
                Name       = "1-st Beer Module",
                TypeId     = -1,
                LocationId = -1
            },
                new Device()
            {
                Id         = -2,
                Name       = "2-nd Beer Module",
                TypeId     = -2,
                LocationId = -1,
                ModuleId   = -1
            }
                );
            Random          random    = new Random();
            List <Metering> meterings = new List <Metering>();

            for (int x = 1; x < 50; x++)
            {
                int      day      = random.Next(5, 10);
                int      hour     = random.Next(5, 10);
                int      minute   = random.Next(5, 10);
                int      second   = random.Next(5, 10);
                int      deviceId = -((x % 2) + 1);
                Metering metering = new Metering()
                {
                    Date     = new DateTime(2019, 12, day, hour, minute, second),
                    DeviceId = deviceId,
                    Id       = -x,
                    Value    = (float)random.Next(50, 100)
                };
                meterings.Add(metering);
            }
            blder.Entity <Metering>()
            .HasData(
                meterings
                );

            blder.Entity <Module>()
            .HasData(
                new Module()
            {
                Id         = -1,
                LocationId = -1,
                Name       = "Cooling block"
            }
                );
            blder.Entity <Location>()
            .HasData(locations);

            blder.Entity <Pedal>()
            .HasData(pedals);

            blder.Entity <Guitar>()
            .HasData(guitars);

            blder.Entity <Amplifier>()
            .HasData(amps);
        }
コード例 #16
0
        public void GlobalGaugeTest()
        {
            var meter = Metering.GetGlobalMeter();

            meter.Gauge("gauge-stat", 10);
        }
コード例 #17
0
        public void GlobalMeteringTest()
        {
            var meter = Metering.GetGlobalMeter();

            meter.Meter("meter-stat");
        }
コード例 #18
0
        public void TenantSpecificGaugeTest()
        {
            var meter = Metering.GetMeterForTenant(_tenant);

            meter.Gauge("tenant-gauge-stat", 10);
        }
コード例 #19
0
 public void BookingEngineMetricTest()
 {
     Metering.GetGlobalMeter().Meter("booking-meter");
     Metering.GetGlobalMeter().Counter("booking-counter", 1);
     Metering.GetGlobalMeter().Gauge("booking-gauge", 10);
 }
コード例 #20
0
 public void TenantSpecificMeteringTest()
 {
     Metering.GetMeterForTenant(_tenant).Meter("meter-stat");
 }