public void AllRecords_SameDate_DiffTimes() { string fileName = "access3.log"; LogParser parserObj = new LogParser(string.Empty, string.Empty, false); var streamObj = File.Open(fileName, FileMode.Open); var result = parserObj.Parse("[email protected]_2019-09-03T00:40:26 00:00", streamObj); Assert.AreNotEqual(result, null); Assert.AreEqual(result.Count, 1); var content = File.ReadAllText(result[0]); AccessDataDetail addObj = JsonConvert.DeserializeObject <AccessDataDetail>(content); Assert.AreEqual(addObj.AccessDetails.Count, 3); Assert.AreEqual(addObj.AccessDetails[0].ModuleName, "en-teachertraining"); Assert.AreEqual(addObj.AccessDetails[0].MainModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[0].SubModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].ModuleName, "en-kolibri-index"); Assert.AreEqual(addObj.AccessDetails[1].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].SubModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[2].ModuleName, "en-wikipedia"); Assert.AreEqual(addObj.AccessDetails[2].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[2].SubModuleCount, 1); }
public static void Run( [BlobTrigger("processedjson/{name}", Connection = "AzureWebJobsStorage")] Stream inputJsonBlob, string name, ILogger log, [CosmosDB(databaseName: "accessdatadb", collectionName: "accessdatacollection", ConnectionStringSetting = "AzureWebJobsCosmos")] ICollector <AccessedSitesLog> cosmosOutput) { log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {inputJsonBlob.Length} Bytes"); //Deserialize the Input Json Blob as AccessDataDetail Object var serializer = new JsonSerializer(); AccessDataDetail result = new AccessDataDetail(); using (StreamReader reader = new StreamReader(inputJsonBlob)) { using (var jsonTextReader = new JsonTextReader(reader)) { result = serializer.Deserialize <AccessDataDetail>(jsonTextReader); } } //For each AccessData Object in the list - create a record in Cosmos DB foreach (AccessData accessedsite in result.AccessDetails) { log.LogInformation($"Test UploadTime:{accessedsite.UpLoadTime} \n "); AccessedSitesLog accessedSiteRecord = new AccessedSitesLog { PartitionKey = result.DeviceId + ' ' + accessedsite.ModuleName + ' ' + result.AccessDate, id = result.DeviceId, Url = accessedsite.ModuleName, Date = accessedsite.UpLoadTime.ToString("MM/dd/yyyy"), MainModuleCount = accessedsite.MainModuleCount, SubModuleCount = accessedsite.SubModuleCount }; // upload accessedSiteRecord to cosmos db cosmosOutput.Add(accessedSiteRecord); log.LogInformation($"Added all to Cosmos DB"); } }
public void OverlapplingRecords() { string fileName = "access4.log"; string uploadDir = "upload4"; if (Directory.Exists(uploadDir)) { Directory.Delete(uploadDir); } Directory.CreateDirectory(uploadDir); LogParser parserObj = new LogParser(string.Empty, string.Empty, false, uploadDir); var streamObj = File.Open(fileName, FileMode.Open); var result = parserObj.Parse("[email protected]_2019-09-03T00:40:26 00:00", streamObj); Assert.AreNotEqual(result, null); Assert.AreEqual(result.Count, 1); var content = File.ReadAllText(result[0]); AccessDataDetail addObj = JsonConvert.DeserializeObject <AccessDataDetail>(content); Assert.AreEqual(addObj.AccessDetails.Count, 3); Assert.AreEqual(addObj.AccessDetails[0].ModuleName, "en-teachertraining"); Assert.AreEqual(addObj.AccessDetails[0].MainModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[0].SubModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].ModuleName, "en-kolibri-index"); Assert.AreEqual(addObj.AccessDetails[1].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].SubModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[2].ModuleName, "en-wikipedia"); Assert.AreEqual(addObj.AccessDetails[2].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[2].SubModuleCount, 1); var uploadResult = parserObj.Upload(result); Assert.AreEqual(uploadResult, true); fileName = "access5.log"; LogParser overlapParserObj = new LogParser(string.Empty, string.Empty, false, uploadDir); var overlapStreamObj = File.Open(fileName, FileMode.Open); var overlapResult = parserObj.Parse("[email protected]_2019-09-03T00:40:26 00:00", streamObj); Assert.AreNotEqual(result, null); Assert.AreEqual(result.Count, 1); var overlapContent = File.ReadAllText(result[0]); AccessDataDetail overlapAddObj = JsonConvert.DeserializeObject <AccessDataDetail>(content); Assert.AreEqual(addObj.AccessDetails.Count, 4); Assert.AreEqual(addObj.AccessDetails[0].ModuleName, "en-teachertraining"); Assert.AreEqual(addObj.AccessDetails[0].MainModuleCount, 2); Assert.AreEqual(addObj.AccessDetails[0].SubModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].ModuleName, "en-kolibri-index"); Assert.AreEqual(addObj.AccessDetails[1].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[1].SubModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[2].ModuleName, "en-wikipedia"); Assert.AreEqual(addObj.AccessDetails[2].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[2].SubModuleCount, 1); Assert.AreEqual(addObj.AccessDetails[2].ModuleName, "en-wikipedia_for_schools"); Assert.AreEqual(addObj.AccessDetails[2].MainModuleCount, 0); Assert.AreEqual(addObj.AccessDetails[2].SubModuleCount, 1); var overlapUploadResult = parserObj.Upload(result); Assert.AreEqual(uploadResult, true); Directory.Delete(uploadDir); }