in DeviceBridgeTests/Providers/StorageProviderTests.cs [181:214]
public async Task RenewHubCacheEntries()
{
using (ShimsContext.Create())
{
ShimOpen();
ShimExecuteNonQuery("CREATE TABLE #CacheEntriesToRenewTmpTable(DeviceId VARCHAR(255) NOT NULL PRIMARY KEY)");
// Once data is sent to server, check that we remove the temp table.
System.Data.SqlClient.Fakes.ShimSqlBulkCopy.AllInstances.WriteToServerAsyncDataTable = (bulkCopy, dt) =>
{
Assert.AreEqual(60, bulkCopy.BulkCopyTimeout);
Assert.AreEqual(1000, bulkCopy.BatchSize);
Assert.AreEqual("#CacheEntriesToRenewTmpTable", bulkCopy.DestinationTableName);
Assert.AreEqual("test-device-1", dt.Rows[0]["DeviceId"]);
Assert.AreEqual("test-device-2", dt.Rows[1]["DeviceId"]);
Assert.AreEqual("test-device-3", dt.Rows[2]["DeviceId"]);
ShimExecuteNonQuery(null, null, cmd =>
{
var expected = @"UPDATE HubCache SET RenewedAt = GETUTCDATE()
FROM HubCache
INNER JOIN #CacheEntriesToRenewTmpTable Temp ON (Temp.DeviceId = HubCache.DeviceId)
DROP TABLE #CacheEntriesToRenewTmpTable";
Assert.AreEqual(Regex.Replace(expected, @"\s+", " "), Regex.Replace(cmd.CommandText, @"\s+", " "));
Assert.AreEqual(300, cmd.CommandTimeout);
});
return Task.CompletedTask;
};
await _storageProvider.RenewHubCacheEntries(LogManager.GetCurrentClassLogger(), new List<string>() { "test-device-1", "test-device-2", "test-device-3" });
}
}