private async Task ProcessQueueMessage(CloudQueueMessage msg) { Trace.TraceInformation("Processing queue message {0}", msg); var workPackage = JsonConvert.DeserializeObject <PrimeNumberWorkPackage>(msg.AsString); if (workPackage.WorkType == WorkType.NewWork) { _numItems = workPackage.NumEntries; _numProcessed = 0; this._primesQueue.DeleteMessage(msg); return; } var numberToTest = workPackage.Number; var isPrime = await Task.Run(() => PrimeSolver.IsPrime(numberToTest)); var primeNumberCandidate = new PrimeNumberCandidate(numberToTest) { IsPrime = isPrime }; await _repository.Add(primeNumberCandidate); _numProcessed++; await CommunicateResult(primeNumberCandidate); //var percent = (int)Math.Round((double)(100 * _numProcessed) / _numItems); await CommunicateProgress(); // Remove message from queue. this._primesQueue.DeleteMessage(msg); }
public static PrimeCandidateViewModel FromEntity(PrimeNumberCandidate item) { return(new PrimeCandidateViewModel { IsPrime = item.IsPrime, Number = item.Number }); }
public void GetIsPrimeNumberTest_PrimeNumber() { // Arrange var pn = new PrimeNumberCandidate(149); // Act var rc = pn.GetIsPrimeNumber(); // Assert Assert.IsTrue(rc); }
public void GetIsPrimeNumberTestNotPrimeNumber() { // Arrange var pn = new PrimeNumberCandidate(9); // Act var rc = pn.GetIsPrimeNumber(); // Assert Assert.IsFalse(rc); }
public void PrimeNumberCandidateTest() { // Arrange var pn = new PrimeNumberCandidate(143); // Act var rc = pn == null; // Assert Assert.IsFalse(rc); }
/// <summary> /// Send result to client endpoint /// </summary> /// <param name="primeCandidate"></param> /// <remarks>Thanks to http://www.jerriepelser.com/blog/communicate-from-azure-webjob-with-signalr for the sample</remarks> /// <returns></returns> private async Task CommunicateResult(PrimeNumberCandidate primeCandidate) { if (!primeCandidate.IsPrime.HasValue || !primeCandidate.IsPrime.Value) { return; } var queryString = $"?number={primeCandidate.Number}&isPrime={primeCandidate.IsPrime}"; //var request = CloudConfigurationManager.GetSetting("ProgressNotificationEndpoint"); var request = BaseUrl + "/PrimeNumberCandidate/ResultNotification" + queryString; await _httpClient.GetAsync(request); }
public void DisposeTest() { // Arrange var isOk = true; var pn = new PrimeNumberCandidate(149); // Act try { // Act pn.Dispose(); } catch { isOk = false; } // Assert Assert.IsTrue(isOk); }