Пример #1
0
        public void GetBlobNameTest()
        {
            // Arrange
            string iotHub    = "foo.azure-devices.net";
            string deviceId  = "abcd";
            string id        = "pqr";
            string extension = "gz";

            var regex = new Regex(BlobNameRegexPattern);

            var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, Mock.Of <IAzureBlobUploader>());

            // Act
            string blobName = azureBlobLogsUploader.GetBlobName(id, LogsContentEncoding.Gzip, LogsContentType.Json);

            // Assert
            Assert.NotNull(blobName);
            Match match = regex.Match(blobName);

            Assert.True(match.Success);
            string receivedIotHub    = match.Groups["iothub"].Value;
            string receivedDeviceId  = match.Groups["deviceid"].Value;
            string receivedId        = match.Groups["id"].Value;
            string receivedTimestamp = match.Groups["timestamp"].Value;
            string receivedExtension = match.Groups["extension"].Value;

            Assert.Equal(id, receivedId);
            Assert.Equal(iotHub, receivedIotHub);
            Assert.Equal(deviceId, receivedDeviceId);
            Assert.Equal(extension, receivedExtension);
            Assert.True(DateTime.UtcNow - DateTime.ParseExact(receivedTimestamp, "yyyy-MM-dd--HH-mm-ss", CultureInfo.InvariantCulture) < TimeSpan.FromSeconds(10));
        }
Пример #2
0
        public async Task GetUploaderCallbackTest()
        {
            // Arrange
            string iotHub   = "foo.azure-devices.net";
            string deviceId = "abcd";
            string id       = "pqr";
            string sasUri   = @"http://testuri/";
            var    regex    = new Regex(BlobNameRegexPattern);

            string receivedBlobName = null;
            Uri    receivedSasUri   = null;
            var    receivedPayload  = new List <byte>();

            byte[] payload1 = Encoding.UTF8.GetBytes("Test payload string");
            byte[] payload2 = Encoding.UTF8.GetBytes("Second interesting payload");

            var azureAppendBlob = new Mock <IAzureAppendBlob>();

            azureAppendBlob.Setup(a => a.Name)
            .Returns(() => receivedBlobName);
            azureAppendBlob.Setup(a => a.AppendByteArray(It.IsAny <ArraySegment <byte> >()))
            .Callback <ArraySegment <byte> >(b => receivedPayload.AddRange(b.ToArray()))
            .Returns(Task.CompletedTask);

            var azureBlobUploader = new Mock <IAzureBlobUploader>();

            azureBlobUploader.Setup(a => a.GetAppendBlob(It.IsAny <Uri>(), It.IsAny <string>(), It.IsAny <Option <string> >(), It.IsAny <Option <string> >()))
            .Callback <Uri, string, Option <string>, Option <string> >((u, b, _, __) =>
            {
                receivedSasUri   = u;
                receivedBlobName = b;
            })
            .ReturnsAsync(azureAppendBlob.Object);

            var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, azureBlobUploader.Object);

            // Act
            Func <ArraySegment <byte>, Task> callback = await azureBlobLogsUploader.GetUploaderCallback(sasUri, id, LogsContentEncoding.Gzip, LogsContentType.Json);

            Assert.NotNull(callback);
            await callback.Invoke(new ArraySegment <byte>(payload1));

            await callback.Invoke(new ArraySegment <byte>(payload2));

            // Assert
            Assert.NotNull(receivedBlobName);
            Match match = regex.Match(receivedBlobName);

            Assert.True(match.Success);
            Assert.NotNull(receivedSasUri);
            Assert.Equal(sasUri, receivedSasUri.ToString());
            Assert.NotNull(receivedPayload);
            Assert.Equal(payload1.Concat(payload2), receivedPayload);
        }
Пример #3
0
        public async Task UploadTest()
        {
            // Arrange
            string iotHub   = "foo.azure-devices.net";
            string deviceId = "abcd";
            string id       = "pqr";
            string sasUri   = @"http://testuri/";
            var    regex    = new Regex(BlobNameRegexPattern);

            string receivedBlobName = null;
            Uri    receivedSasUri   = null;

            byte[] receivedPayload = null;

            byte[] payload = Encoding.UTF8.GetBytes("Test payload string");

            var azureBlob = new Mock <IAzureBlob>();

            azureBlob.Setup(a => a.BlobProperties)
            .Returns(new BlobProperties());
            azureBlob.Setup(a => a.Name)
            .Returns(() => receivedBlobName);
            azureBlob.Setup(a => a.UploadFromByteArrayAsync(payload))
            .Callback <byte[]>(b => receivedPayload = b)
            .Returns(Task.CompletedTask);

            var azureBlobUploader = new Mock <IAzureBlobUploader>();

            azureBlobUploader.Setup(a => a.GetBlob(It.IsAny <Uri>(), It.IsAny <string>()))
            .Callback <Uri, string>((u, b) =>
            {
                receivedSasUri   = u;
                receivedBlobName = b;
            })
            .Returns(azureBlob.Object);

            var azureBlobLogsUploader = new AzureBlobLogsUploader(iotHub, deviceId, azureBlobUploader.Object);

            // Act
            await azureBlobLogsUploader.Upload(sasUri, id, payload, LogsContentEncoding.Gzip, LogsContentType.Json);

            // Assert
            Assert.NotNull(receivedBlobName);
            Match match = regex.Match(receivedBlobName);

            Assert.True(match.Success);
            Assert.NotNull(receivedSasUri);
            Assert.Equal(sasUri, receivedSasUri.ToString());
            Assert.NotNull(receivedPayload);
            Assert.Equal(payload, receivedPayload);
        }
Пример #4
0
 public void GetExtensionTest(LogsContentEncoding contentEncoding, LogsContentType contentType, string expectedExtension)
 {
     Assert.Equal(expectedExtension, AzureBlobLogsUploader.GetExtension(contentEncoding, contentType));
 }