public async Task SubscribeAsync <T>(Func <T, Task> handler, SubscribeOptions subscribeOptions = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class
        {
            InitProcess();
            var topic = GetTopic(typeof(T));

            ValidateSubscribe(topic);

            subscribeOptions = subscribeOptions ?? new SubscribeOptions();
            var threadCount = subscribeOptions.ConsumerThreadCount;

            threadCount = threadCount > 0 ? threadCount : _options.DefaultConsumerThreadCount;
            AssertUtils.IsTrue(threadCount > 0, "消费者线程数必须大于0");
            _logger.LogInformation($"订阅[{topic}],threadcount={threadCount}");


            Func <MessageResult, Task> action = async message =>
            {
                var realObj = _options.Serializer.Deserialize <T>(message.Data);
                await handler(realObj);
            };

            for (int i = 0; i < threadCount; i++)
            {
                var process = new WorkerProcess(_serviceProvider, topic);
                await _processExecuter.AddProcess(process, $"redis即时任务处理:{topic}");

                process.OnMessage += action;
            }
            backgroundProcessContext.SubscriberTopics.Add(topic);//便于ErrorProcess处理
        }
Esempio n. 2
0
        private bool ReadTrackIRData(ref InternalHeadPoseData output)
        {
            if (trackIRWorker == null)
            {
                trackIRWorker = SetupRealTrackIRDll();
            }

            var trackirData = freepieData.Read(x => x.TrackIRData);

            if (DateTime.Now - new DateTime(trackirData.LastUpdatedTicks) > TimeSpan.FromSeconds(WorkerProcessTimeout))
            {
                trackIRWorker.Dispose();
                throw new Exception("Lost contact with worker process.");
            }

            var data = trackirData.RealTrackIRData;

            if (data.FrameSignature == lastFrame || data.FrameSignature == 0)
            {
                return(false);
            }

            output = new InternalHeadPoseData {
                Yaw = data.Yaw, Pitch = data.Pitch, Roll = data.Roll, X = data.X, Y = data.Y, Z = data.Z
            };

            lastFrame = data.FrameSignature;

            return(true);
        }
Esempio n. 3
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            using (FlightProcessorConnection cn = new FlightProcessorConnection()) {
                this.Text += " [" + cn.Database.Connection.Database + "]";
            }

            _timer1.Interval = 2000;
            _timer1.Elapsed += new System.Timers.ElapsedEventHandler(_timerEvent1);
            _timer1.Enabled  = true;

            _timer2.Interval = 2000; //every 10 second
            _timer2.Elapsed += new System.Timers.ElapsedEventHandler(_timerEvent2);
            _timer2.Enabled  = true;

            ThreadDBActions = new Thread(new ThreadStart(fnThreadDBActions));
            ThreadDBActions.IsBackground = true;
            ThreadDBActions.Start();

            ThreadSendAlertQueue = new Thread(new ThreadStart(fnSendAlertQueue));
            ThreadSendAlertQueue.IsBackground = true;
            ThreadSendAlertQueue.Start();

            ResetFlightsGrid();
            gridFlights.AutoSizeCells();
            ResetNotificationGrid();
            gridNotifications.AutoSizeCells();

            WorkerProcess.OnTaskError         += ShowExceptions;
            WorkerProcess.OnDbEntityException += ShowEntityErrors;
            WorkerProcess.StartProcessor();
        }
Esempio n. 4
0
 public void WorkerProcessFinished()
 {
     try
     {
         workerProcess = null;
         WmiBase.Singleton.DebugMsg("Worker process died");
         if ((lastStartAttempt - DateTime.UtcNow) <
             TimeSpan.FromMilliseconds(restartTime))
         {
             Thread.Sleep(restartTime);
             restartTime = restartTime * 2;
             if (restartTime > 120000)
             {
                 restartTime = 120000;
             }
         }
         else
         {
             restartTime = 1000;
         }
         if (running)
         {
             wmisession.Log("Worker process restarting");
             getConsoleAndSpawn();
         }
     }
     catch (Exception e)
     {
         exceptionhandler.HandleException("Clipboard handle worker", e);
     }
 }
Esempio n. 5
0
        public async Task <bool> fnThreadDBActionsAction()
        {
            // Check any Flights that is more than 60 * 3 seconds old, then
            // Generate the report and remove the flights
            foreach (String Key in WorkerProcess.Keys())
            {
                DroneDataProcessor TheFlight   = WorkerProcess.Flight(Key);
                Double             ElapsedTime = TheFlight.GetElapsed();

                if (ElapsedTime > 30)
                {
                    //Generate the report
                    await TheFlight.UpdateFlightSummary();

                    await TheFlight.GenerateReport();

                    WorkerProcess.RemoveProximity(Key);
                    WorkerProcess.RemoveFlight(Key);
                    TheFlight = null;
                }
            }
            //Update the Flight information back to Database
            await WorkerProcess.UpdateFlightsToDB();

            //Update Proximity of active flights
            await WorkerProcess.GenerateProximity();

            //Load list of alerts required to send
            await AlertQueue.LoadQueue();

            return(true);
        }
Esempio n. 6
0
            void spawnWorker()
            {
                if (running)
                {
                    wmisession.Log("Spawn Worker Process");

                    if (workerProcess == null)
                    {
                        try
                        {
                            lastStartAttempt = DateTime.UtcNow;
                            workerProcess    = new WorkerProcess(clipboard, wmisession, exceptionhandler, this, consoletoken);
                        }
                        catch (Exception e)
                        {
                            wmisession.Log("Worker process failed to start " + e.ToString());
                            gotConsole = false;
                        }
                    }
                    else
                    {
                        wmisession.Log("Unexpectedly trying to spawn a worker process while one is running");
                        gotConsole = false;
                    }
                }
            }
        public object Get()
        {
            //
            // Filter by WorkerProcess
            string wpUuid = Context.Request.Query[Defines.IDENTIFIER];

            if (string.IsNullOrEmpty(wpUuid))
            {
                return(NotFound());
            }

            WorkerProcess wp = WorkerProcessHelper.GetWorkerProcess(new WorkerProcessId(wpUuid).Id);

            if (wp == null)
            {
                return(NotFound());
            }

            IEnumerable <Site> sites = SitesHelper.GetSites(wp);

            //
            // Set HTTP header for total count
            this.Context.Response.SetItemsCount(sites.Count());

            Fields fields = Context.Request.GetFields();

            var obj = new {
                websites = sites.Select(site => Sites.SiteHelper.ToJsonModelRef(site, fields))
            };

            return(obj);
        }
        public Worker(string[] args)
        {
            Console.WriteLine(Environment.NewLine + "Welcome to XAP.NET 11 Worker!" + Environment.NewLine + " hostName=" + HostName + "currentProcess.Id=" + CurrentProcess.Id);

            WorkerProcess workerProcess = new WorkerProcess();

            workerProcess.HostName      = HostName;
            workerProcess.ProcessID     = CurrentProcess.Id;
            workerProcess.ID            = HostName + "=" + CurrentProcess.Id;
            workerProcess.StartDateTime = DateTime.Now;
            SpaceProxy.Write(workerProcess, 5000);

            String ioType = args.Length == 1 ? "NIO" : args[1];

            SleepTime = args.Length == 2 ? 2000 : Convert.ToInt32(args[2]);
            if (ioType.Equals("IO"))
            {
                IEventListenerContainer <Request> eventListenerContainer = EventListenerContainerFactory.CreateContainer <Request>(SpaceProxy, new WorkeIO());
                eventListenerContainer.Start();
            }
            else
            {
                IEventListenerContainer <Request> eventListenerContainer = EventListenerContainerFactory.CreateContainer <Request>(SpaceProxy, new WorkeNIO());
                eventListenerContainer.Start();
            }
        }
        public void DoWork()
        {
            WorkerProcess workerProcess = new WorkerProcess();

            workerProcess.ProcessID = Worker.CurrentProcess.Id;
            workerProcess.ID        = workerProcess.HostName + "=" + workerProcess.ProcessID;
            while (true)
            {
                try
                {
                    workerProcess.StartDateTime = DateTime.Now;
                    IdQuery <WorkerProcess> idQuery = new IdQuery <WorkerProcess>(workerProcess.ID);
                    //IChangeResult<WorkerProcess> changeResult = Worker.SpaceProxy.Change<WorkerProcess>(idQuery, new ChangeSet().Set("LastUpdateDateTime", DateTime.Now).Lease(10000));
                    IChangeResult <WorkerProcess> changeResult = Worker.ComputeSpaceProxy.Change <WorkerProcess>(idQuery, new ChangeSet().Lease(10000).Set("Priority", Worker.Priority));
                    if (changeResult.NumberOfChangedEntries == 0)
                    {
                        WriteHeartBeat(workerProcess);
                    }
                    Thread.Sleep(timeout);
                }
                catch (Exception)
                {
                    // do nothing
                }
            }
        }
Esempio n. 10
0
            internal void Start()
            {
                process             = new WorkerProcess(this);
                process.Ready      += OnReady;
                process.WorkerLost += OnWorkerLost;

                process.Start(Program.CreateStartInfo());
            }
Esempio n. 11
0
 void handleShutdown()
 {
     running = false;
     if (workerProcess != null)
     {
         workerProcess.Stop(false);
         workerProcess = null;
     }
 }
        public static void Kill(WorkerProcess wp)
        {
            if (wp == null)
            {
                throw new ArgumentNullException(nameof(wp));
            }

            Process.GetProcessById(wp.ProcessId).Kill();
        }
 private void WriteHeartBeat(WorkerProcess workerProcess)
 {
     workerProcess.HostName           = Worker.HostName;
     workerProcess.ProcessID          = Worker.CurrentProcess.Id;
     workerProcess.ID                 = workerProcess.HostName + "=" + workerProcess.ProcessID;
     workerProcess.StartDateTime      = DateTime.Now;
     workerProcess.LastUpdateDateTime = DateTime.Now;
     workerProcess.Priority           = Worker.Priority;
     Worker.ComputeSpaceProxy.Write(workerProcess, 5000);
 }
 /// <summary> Отримати дані про процес </summary>
 /// <param name="workerProcess">процес</param>
 protected WorkerProcessData GetWorkerProcessData(WorkerProcess workerProcess)
 {
     var(ram, cpu) = GetProcessRamCpuUsage(workerProcess.ProcessId);
     return(new WorkerProcessData {
         ProcessId = workerProcess.ProcessId,
         State = workerProcess.State.ToString(),
         RAM = ram,
         CPU = cpu
     });
 }
Esempio n. 15
0
        public object Get()
        {
            IEnumerable <Request> requests = null;

            //
            // Filter by WorkerProcess
            string wpUuid = Context.Request.Query[Defines.WP_IDENTIFIER];

            if (!string.IsNullOrEmpty(wpUuid))
            {
                WorkerProcess wp = WorkerProcessHelper.GetWorkerProcess(new WorkerProcessId(wpUuid).Id);
                if (wp == null)
                {
                    return(NotFound());
                }

                requests = RequestHelper.GetRequests(wp, Context.Request.GetFilter());
            }

            //
            // Filter by Site
            if (requests == null)
            {
                string siteUuid = Context.Request.Query[Sites.Defines.IDENTIFIER];

                if (!string.IsNullOrEmpty(siteUuid))
                {
                    Site site = SiteHelper.GetSite(new SiteId(siteUuid).Id);

                    if (site == null)
                    {
                        return(NotFound());
                    }

                    requests = RequestHelper.GetRequests(site, Context.Request.GetFilter());
                }
            }

            //
            // Get all
            if (requests == null)
            {
                requests = RequestHelper.GetRequests(Context.Request.GetFilter());
            }

            //
            // Set HTTP header for total count
            this.Context.Response.SetItemsCount(requests.Count());

            Fields fields = Context.Request.GetFields();

            return(new {
                requests = requests.Select(r => RequestHelper.ToJsonModelRef(r, fields))
            });
        }
 public static object ToJsonModelRef(WorkerProcess wp, Fields fields = null)
 {
     if (fields == null || !fields.HasFields)
     {
         return(WpToJsonModel(wp, RefFields, false));
     }
     else
     {
         return(WpToJsonModel(wp, fields, false));
     }
 }
Esempio n. 17
0
        public static IEnumerable <Request> GetRequests(WorkerProcess wp, Filter filter = null)
        {
            if (wp == null)
            {
                throw new ArgumentNullException(nameof(wp));
            }

            int timeElapsed = (int?)filter?.Get <uint>("time_elapsed") ?? DEFAULT_TIME_ELASPSED;

            return(wp.GetRequests(timeElapsed).Distinct(_RequestComparer));
        }
Esempio n. 18
0
            void restartWorker()
            {
                wmisession.Log("Restart worker");
                workerProcess.Stop(false);
                workerProcess = null;

                if (running)
                {
                    getConsoleAndSpawn();
                }
            }
Esempio n. 19
0
        public void StartWorkers(WorkerProcess process, int worker_count)
        {
            Task[] tasks = new Task[worker_count];

            for (int index = 0; index < worker_count; index++)
            {
                tasks[index] = Task.Run(() => { this.Start(process); });
            }

            this.running_worker_tasks = tasks;
        }
Esempio n. 20
0
 public WorkerProcess2(WorkerProcess process)
 {
     AppPoolName        = process.AppPoolName;
     ProcessGuid        = process.ProcessGuid;
     ProcessId          = process.ProcessId;
     State              = process.State;
     ApplicationDomains = new List <ApplicationDomain2>();
     foreach (var item in process.ApplicationDomains)
     {
         ApplicationDomains.Add(new ApplicationDomain2(item));
     }
 }
Esempio n. 21
0
        private WorkerProcess<TrackIRWorker> SetupRealTrackIRDll()
        {
            string realDllPath = DllRegistrar.GetRealTrackIRDllPath(Environment.CurrentDirectory);

            if (realDllPath == null)
                return new WorkerProcess<TrackIRWorker>();

            freepieData.Write(x => x.TrackIRData, new TrackIRData { LastUpdatedTicks = DateTime.Now.Ticks });
            var worker = new WorkerProcess<TrackIRWorker>(Path.Combine(realDllPath, NPClientName).Quote() + " " + Process.GetCurrentProcess().MainWindowHandle.ToInt64() + " " + doLog);
            worker.Start();
            return worker;
        }
Esempio n. 22
0
        public void Dispose()
        {
            //Buffered data.
            while (WorkerProcess.IsBusy)
            {
                WorkerProcess.CancelAsync();
            }
            Socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", System.Threading.CancellationToken.None);

            BufferedData = null;

            Socket.Dispose();
            //Client
            //Background worker.
        }
        public void StartWorkers(WorkerProcess process, int worker_count)
        {
            SubscriberProcess x = (req, tracker) => {
                this.CurrentZeusRequestId = req.request_id;
                return(process(req));
            };

            this.StartWorkersAsync(
                (SubscriberProcess)((req, tracker) =>
            {
                this.CurrentZeusRequestId = req.request_id;
                return(process(req));
            }),
                worker_count).Wait();
        }
Esempio n. 24
0
        public static IEnumerable <ApplicationInfo> GetApplications(WorkerProcess wp)
        {
            if (wp == null)
            {
                throw new ArgumentNullException(nameof(wp));
            }

            List <ApplicationInfo> result = new List <ApplicationInfo>();

            //
            // Get AppPool
            var appPool = AppPoolHelper.GetAppPool(wp.AppPoolName);

            if (appPool == null)
            {
                return(result);
            }

            //
            // Find all apps in the app pool
            var apps = Applications.ApplicationHelper.GetApplications(appPool);

            //
            // Match Site Id and App Path
            foreach (var app in apps)
            {
                foreach (var ad in wp.ApplicationDomains)
                {
                    if (ad.Id.Contains($"/{app.Site.Id}/"))
                    {
                        string appPath = app.Application.Path;
                        string adPath  = ad.VirtualPath;

                        if (appPath.Equals(adPath, StringComparison.OrdinalIgnoreCase) ||
                            appPath.Equals(adPath.TrimEnd('/'), StringComparison.OrdinalIgnoreCase))
                        {
                            result.Add(app);
                            break;
                        }
                    }
                }
            }

            return(result);
        }
Esempio n. 25
0
        public void DoWork()
        {
            WorkerProcess workerProcess = new WorkerProcess();

            workerProcess.HostName           = Worker.HostName;
            workerProcess.ProcessID          = Worker.CurrentProcess.Id;
            workerProcess.ID                 = workerProcess.HostName + "=" + workerProcess.ProcessID;
            workerProcess.StartDateTime      = DateTime.Now;
            workerProcess.LastUpdateDateTime = DateTime.Now;
            Worker.SpaceProxy.Write(workerProcess, 5000);

            while (true)
            {
                workerProcess.StartDateTime = DateTime.Now;
                Worker.SpaceProxy.Change(new IdQuery <WorkerProcess>(workerProcess.ID), new ChangeSet().Set("LastUpdateDateTime", DateTime.Now).Lease(5000));
                Thread.Sleep(timeout);
            }
        }
Esempio n. 26
0
        private void _timerEvent1(object Source, System.Timers.ElapsedEventArgs e)
        {
            SetText(txtPendingRecords, WorkerProcess.GetPendingDataCount().ToString());

            gridFlights.Invoke(new Action(() => {
                ResetFlightsGrid();
                int Row = 0;
                foreach (String Key in WorkerProcess.Keys())
                {
                    Row++;
                    gridFlights.Rows.Insert(Row);
                    for (var i = 0; i <= 9; i++)
                    {
                        gridFlights[Row, i] = WorkerProcess.Flight(Key).Cell(i);
                    }
                }
                gridFlights.AutoSizeCells();
            }));
        }
Esempio n. 27
0
        public static void Main(string[] args)
        {
            //TODO: read from configuration / env variables configuration parameters
            var workerProcess = new WorkerProcess(new RabbitMQEventConsumer(host: "localdev", vhost: "/test", username: "******", password: "******"),
                                                  new SpotCharterEventSourceRepository("SpotCharters", "spot_user", "spot_user", host: "localdev"),
                                                  new SpotCharterQueryRepository("localdev", "spotService", username: "******", password: "******"));

            Task.WaitAll(Task.Factory.StartNew(() =>
            {
                Console.WriteLine("Consumer start waiting events from message broker.");
                workerProcess.Start("chartering.spot.viewupdate");
                while (Console.ReadLine() != "quit")
                {
                    ;
                }
                Console.WriteLine("Quitting consumer ...");
                workerProcess.Quit();
                Console.WriteLine("Closing");
            }));
        }
Esempio n. 28
0
        public object Get(string id)
        {
            var reqId = new RequestId(id);

            WorkerProcess wp = WorkerProcessHelper.GetWorkerProcess(reqId.ProcessId);

            if (wp == null)
            {
                return(NotFound());
            }

            Request request = RequestHelper.GetRequest(wp, reqId.Id);

            if (request == null)
            {
                return(NotFound());
            }

            return(RequestHelper.ToJsonModel(request, Context.Request.GetFields()));
        }
Esempio n. 29
0
        private async Task <WorkerClient> ActivateWorker(CancellationToken ct)
        {
            if (this.disposed)
            {
                throw new ObjectDisposedException("This instance has been disposed.");
            }

            if (this.debugMode != DebugMode.None)
            {
                Console.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                "{0} Waiting for worker to be ready.", this.id));
            }

            await this.waitForWorkerSemaphore.WaitAsync(ct);

            lock (this.stateLock) {
                this.RecoverWorkers();

                WorkerClient nextClient;
                if (this.idleClients.Count > 0)
                {
                    nextClient = this.idleClients.Dequeue();
                }
                else
                {
                    nextClient = new WorkerProcess().Start(this.debugMode);
                    nextClient.CurrentStateChangedEvent += this.OnWorkerCurrentStateChanged;
                }
                this.busyClients.AddLast(nextClient);

                this.EnsureIdleWorkerLimit();

                if (this.debugMode != DebugMode.None)
                {
                    Console.WriteLine(string.Format(CultureInfo.InvariantCulture,
                                                    "{0} Successfully retrieved worker {1}", this.id, nextClient));
                }
                return(nextClient);
            }
        }
Esempio n. 30
0
        private CounterDescriptor CreateDescriptor(WorkerProcess w3wp)
        {
            //obtain reference to PerformanceCounter object
            var pc = new PerformanceCounter("Process", "% Processor Time", PerformanceCounterProcessHelper.GetPerformanceCounterProcessName(w3wp.ProcessId), true);

            //read value to start counter
            pc.NextValue();

            //setup descriptor object for central framework
            var result = new IisWorkerProcessCpuCounterDescriptor
            {
                Name          = w3wp.AppPoolName,
                SystemCounter = pc,
                ProcessId     = w3wp.ProcessId,
                Unit          = "Percent",
                MetricName    = "CPUUtilization"
            };

            result.Dimensions.Add("SiteName", w3wp.AppPoolName);

            return(result);
        }
Esempio n. 31
0
        public void ListMessagesSucceeds()
        {
            #region Test Setup
            List<MessagePing> callResult;
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.FetchMessages(DEFAULT_SOURCE, DEFAULT_DESTINATION);
            #endregion

            #region Assert Operation Result
            CollectionAssert.AllItemsAreNotNull(callResult);
            #endregion
        }
Esempio n. 32
0
 public void SentTimeIsExactly1WeekInPast()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.UtcNow.AddDays(Exactly1WeekPast),
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsTrue(returnValue);
 }
Esempio n. 33
0
 public void SentTimeIsLessThanMaxTime()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.MaxValue,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsFalse(returnValue);
 }
Esempio n. 34
0
        public void CheckConversationProfileValues()
        {
            #region Test Setup
            List<PingList> callResult;
            string source = "+919840200524";
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.ListConversationRoot(source);
            #endregion

            #region Assert Operation Result
            Assert.IsTrue(!String.IsNullOrEmpty(callResult.First<PingList>().DestinationPingerProfile.PingerImage));
            #endregion
        }
Esempio n. 35
0
            void spawnWorker()
            {
                if (running)
                {

                    wmisession.Log("Spawn Worker Process");

                    if (workerProcess == null) {
                        try
                        {
                            lastStartAttempt = DateTime.UtcNow;
                            workerProcess = new WorkerProcess(clipboard, wmisession, exceptionhandler, this, consoletoken);
                        }
                        catch (Exception e)
                        {
                            wmisession.Log("Worker process failed to start " + e.ToString());
                            gotConsole = false;
                        }
                    }
                    else {
                        wmisession.Log("Unexpectedly trying to spawn a worker process while one is running");
                        gotConsole = false;
                    }

                }
            }
        public void FetchMessageSucceds()
        {
            #region Setup for test
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            List<MessagePing> returnValue;
            Expression<Func<MessagePing, bool>> expr = d => d.Destination == defaultDestination;
            repoInstance.Setup(ent => ent.Add(It.IsAny<MessagePing>())).Returns(dummyMessage);
            #endregion

            #region Test
            returnValue = testSubject.FetchMessages(defaultSource, defaultDestination);
            //repoInstance.Verify(e => e.Where(
            //                                    It.Is<Expression<Func<MessagePing, bool>>>(
            //                                        param => Expression.Lambda<Func<string>>(
            //                                            (MemberExpression)(param.Body as BinaryExpression).Right
            //                                        ).Compile()() == "+919840200524")
            //                                    )
            //                                );
            //repoInstance.Verify(e => e.Where(
            //                                    It.Is<Expression<Func<MessagePing, bool>>>(
            //                                        param => Expression.Lambda<Func<string>>(
            //                                            (MemberExpression)(param.Body as BinaryExpression).Left
            //                                        ).Body.ToString() == "d.Destination")
            //                                    )
            //                                );
            //Assert.IsNotNull(returnValue);
            Assert.IsTrue(0 < returnValue.Count);
            MessagePing retrievedMessage = returnValue[0];
            Assert.IsTrue(dummyMessage.Id == retrievedMessage.Id);
            #endregion
        }
Esempio n. 37
0
        public void ListConversationRootReportsFailure()
        {
            #region Test Setup
            List<PingList> callResult;
            string source = "+919840200527";
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.ListConversationRoot(source);
            int actualCount = conversationGroups.Where<MessagePing>(passedExpression).Count<MessagePing>();
            #endregion

            #region Assert Operation Result
            Assert.IsTrue(actualCount != callResult.Count);
            #endregion
        }
Esempio n. 38
0
 public void IsRecievedTimeWithinPast1Hour()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.UtcNow,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsTrue(DateTime.UtcNow.AddHours(Within1HourPast) < passedToRepo.MessageRecievedUTC);
 }
Esempio n. 39
0
        public void ListConversationRootSucceeds()
        {
            #region Test Setup
            List<PingList> callResult;
            string source = "+919840200524";
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.ListConversationRoot(source);
            #endregion

            #region Assert Operation Result
            CollectionAssert.AllItemsAreNotNull(callResult);
            #endregion
        }
        public void PostMessageSucceeds()
        {
            #region Setup for test
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            bool returnValue;
            repoInstance.Setup(ent => ent.Add(It.IsAny<MessagePing>())).Returns(dummyMessage);
            #endregion

            #region Test
            returnValue = testSubject.PostMessage(dummyMessage);
            repoInstance.Verify(ent => ent.Add(dummyMessage),Times.AtLeastOnce,"Was called lesser than once");
            Assert.IsTrue(returnValue);
            #endregion
        }
Esempio n. 41
0
 public void DoesServerAddRecievedTimeForMessage()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.UtcNow,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsNotNull(passedToRepo.MessageRecievedUTC);
 }
Esempio n. 42
0
 public void RecievedTimeIsAlwaysGreaterThanSentTime()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     DateTime timestamp = DateTime.UtcNow;
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = timestamp.AddMilliseconds(1),
         MessageRecievedUTC = timestamp
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsFalse(returnValue);
 }
Esempio n. 43
0
        public void MessagesAreFetchedWithProfileDetails()
        {
            #region Test Setup
            List<MessagePing> callResult;
            bool valueCheckForAllItems = true;
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.FetchMessages(DEFAULT_SOURCE, DEFAULT_DESTINATION);
            foreach (MessagePing message in callResult)
            {
                valueCheckForAllItems &= null != message.DestinedUserProfile;
            }
            #endregion

            #region Assert Operation Result
            Assert.IsTrue(valueCheckForAllItems);
            #endregion
        }
Esempio n. 44
0
 public void IsTimeRecievedInUTCForMessage()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     DateTime timestamp = DateTime.Now;
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = timestamp,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsTrue(DateTimeKind.Utc == data.MessageRecievedUTC.Value.Kind);
 }
        public void SourceAndDestinationAreNotSame()
        {
            #region Setup for test
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            repoInstance.Setup(ent => ent.Add(It.IsAny<MessagePing>())).Returns(dummyMessage);
            MessagePing testData = new MessagePing()
            {
                Source = "+919840200524",
                Destination = "+919840200524",
                Message = "Hello!",
                MessageSentUTC = DateTime.UtcNow
            };
            #endregion

            #region Test and Assert
            bool postResult = testSubject.PostMessage(testData);
            Assert.IsFalse(postResult);
            #endregion
        }
Esempio n. 46
0
 public void IsRecievedTimeBetweenMinAndMaxDateTimeValue()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.UtcNow,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsTrue(DateTime.MinValue < passedToRepo.MessageRecievedUTC &&
                     DateTime.MaxValue > passedToRepo.MessageRecievedUTC);
 }
Esempio n. 47
0
        private bool ReadTrackIRData(ref InternalHeadPoseData output)
        {
            if (trackIRWorker == null)
                trackIRWorker = SetupRealTrackIRDll();

            var trackirData = freepieData.Read(x => x.TrackIRData);

            if (DateTime.Now - new DateTime(trackirData.LastUpdatedTicks) > TimeSpan.FromSeconds(WorkerProcessTimeout))
            {
                trackIRWorker.Dispose();
                throw new Exception("Lost contact with worker process.");
            }

            var data = trackirData.RealTrackIRData;

            if (data.FrameSignature == lastFrame || data.FrameSignature == 0)
                return false;

            output = new InternalHeadPoseData { Yaw = data.Yaw, Pitch = data.Pitch, Roll = data.Roll, X = data.X, Y = data.Y, Z = data.Z };

            lastFrame = data.FrameSignature;

            return true;
        }
Esempio n. 48
0
        void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {

                WorkerProcess data = new WorkerProcess();
                data.data = Request("GET", (string)e.Argument, "{}");
                data.uri = (String)e.Argument;
                e.Result = data;
            }
            catch (Exception ex)
            {
            }
        }
Esempio n. 49
0
 void sendWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     try
     {
         object[] data = (object[])e.Argument;
         string method = (string)data[0];
         string url = (string)data[1];
         string payload = (string)data[2];
         WorkerProcess wp = new WorkerProcess();
         wp.method = method;
         wp.data = Request((string)method, (string)url, payload);
         wp.uri = (String)url;
         e.Result = wp;
     }
      catch (Exception ex)
     {
     }
 }
Esempio n. 50
0
 public void WorkerProcessFinished()
 {
     try
     {
         workerProcess = null;
         WmiBase.Singleton.DebugMsg("Worker process died");
         if ((lastStartAttempt - DateTime.UtcNow) <
             TimeSpan.FromMilliseconds(restartTime)) {
             Thread.Sleep(restartTime);
             restartTime = restartTime * 2;
             if (restartTime > 120000) {
                 restartTime = 120000;
             }
         }
         else {
             restartTime = 1000;
         }
         if (running)
         {
             wmisession.Log("Worker process restarting");
             getConsoleAndSpawn();
         }
     }
     catch (Exception e)
     {
         exceptionhandler.HandleException("Clipboard handle worker", e);
     }
 }
Esempio n. 51
0
 public void DoesServerPreserveSentTimeForMessage()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     DateTime timestamp = DateTime.UtcNow;
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = timestamp,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.AreEqual(data.MessageSentUTC, timestamp);
 }
Esempio n. 52
0
 void handleShutdown()
 {
     running = false;
     if (workerProcess != null)
     {
         workerProcess.Stop(false);
         workerProcess = null;
     }
 }
Esempio n. 53
0
            void restartWorker()
            {
                wmisession.Log("Restart worker");

                workerProcess.Stop(false);
                workerProcess = null;

                if (running)
                {
                    getConsoleAndSpawn();
                }
            }
Esempio n. 54
0
 public void CheckConversationOrder()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     string source = "+919941841903";
     string destination = "+919840200524";
     List<MessagePing> conversation = testSubject.FetchMessages(source, destination);
     for (int i = 1; i < conversation.Count - 1; i++)
     {
         Assert.IsTrue(conversation[i].MessageSentUTC > conversation[i - 1].MessageSentUTC,
                     "The test failed for " + i + " iteration");
     }
 }
Esempio n. 55
0
        public void MessagesAreFetchedWithProperProfileDetails()
        {
            #region Test Setup
            List<MessagePing> callResult;
            List<string> profilePictures;
            testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
            #endregion

            #region Test Operations
            callResult = testSubject.FetchMessages(DEFAULT_SOURCE, DEFAULT_DESTINATION);
            profilePictures = callResult.Select<MessagePing, string>(r => r.DestinedUserProfile.PingerImage).ToList<string>();
            #endregion

            #region Assert Operation Result
            CollectionAssert.AllItemsAreNotNull(profilePictures);
            #endregion
        }
Esempio n. 56
0
 public void BothSentAndRecievedTimeAreNotPresent()
 {
     testSubject = new WorkerProcess(repoInstance.Object, membershipInstance.Object, profileInstance.Object);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = null,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsFalse(returnValue);
 }
Esempio n. 57
0
 public void DoesMessageHaveMessageSentTime()
 {
     //TODO: Properly instantiate the WorkerProcess
     testSubject = new WorkerProcess(repoInstance.Object, null, null);
     MessagePing data = new MessagePing()
     {
         Id = Guid.NewGuid(),
         Source = DefaultSource,
         Destination = DefaultDestination,
         Message = "Hi!!",
         MessageSentUTC = DateTime.MinValue,
         MessageRecievedUTC = null
     };
     bool returnValue = testSubject.PostMessage(data);
     Assert.IsFalse(returnValue);
 }