Example #1
0
        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");
            }
        }
Example #3
0
        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);
        }