public void SetFetchEngineProcedureTest() { string[] Expected; db.TruncateTables(); DateTime TIME_BEFORE_INSERTING = DateTime.UtcNow; Thread.Sleep(time); db.SetFetchEngine("Fetch1"); Thread.Sleep(time); DateTime TIME_MIDDLE_INSERTING = DateTime.UtcNow; Thread.Sleep(time); db.SetFetchEngine("Fetch2"); Thread.Sleep(time); DateTime TIME_AFTER_INSERTING = DateTime.UtcNow; Thread.Sleep(time); //STEP 1 var Sources = db.GetFetchEngine(TIME_AFTER_INSERTING).ToArray(); Expected = new string[] { "Fetch1", "Fetch2" }; Assert.AreEqual(1, Sources.Length); foreach (var item in Sources) { Assert.IsTrue(Expected.Contains(item.FullClrTypeName)); } //STEP 2 Sources = db.GetFetchEngine(TIME_MIDDLE_INSERTING).ToArray(); Expected = new string[] { "Fetch1" }; Assert.AreEqual(1, Sources.Length); foreach (var item in Sources) { Assert.IsTrue(Expected.Contains(item.FullClrTypeName)); } //STEP 3 Sources = db.GetFetchEngine(TIME_BEFORE_INSERTING).ToArray(); Expected = new string[] { }; Assert.AreEqual(0, Sources.Length); }
public void Reset(string azureGAC = null) { // check that engine is among the assemblies if (azureGAC == null) { azureGAC = Path.Combine(Directory.GetCurrentDirectory(), "azureGAC"); } if (!Directory.Exists(azureGAC)) { Console.WriteLine("Error: no such directory: {0}.", azureGAC); } else { try { Tuple <Assembly, byte[]>[] toLoadtoGAC = GetBaseAssembliesForAzureGac(azureGAC).ToArray(); var ee = from a in toLoadtoGAC from t in a.Item1.GetTypes() where t.GetInterfaces().Any(i => i.Name == "IFetchEngine") select t.AssemblyQualifiedName; var engines = ee.ToArray(); if (engines.Length < 1) { Console.WriteLine("Error: {0} assemblies to load in AzureGAC and none of them contains IFetchEngine.", toLoadtoGAC.Length); } else if (engines.Length > 1) { Console.WriteLine("Error: multiple engines found:\n{0}", string.Join("\n", engines)); } else { Console.WriteLine("Engine found: {0}", engines[0]); db.TruncateTables(); if (isConnectedToCloud) { astore.Reset(); foreach (Tuple <Assembly, byte[]> toLoad in toLoadtoGAC) { astore.Install(toLoad.Item1); } //clearing requests container var csa = CloudStorageAccount.Parse(storageConnectionString); var client = csa.CreateCloudBlobClient(); var requestsContatiner = client.GetContainerReference("requests"); requestsContatiner.CreateIfNotExist(); Parallel.ForEach(requestsContatiner.ListBlobs(), x => { try { ((CloudBlob)x).Delete(); } catch (StorageClientException sce) { if (sce.ErrorCode != StorageErrorCode.BlobNotFound) { return; } } }); } db.SetFetchEngine(string.Format(engines[0])); } } catch (System.Reflection.ReflectionTypeLoadException e) { Console.WriteLine(e.Message); Console.WriteLine(string.Join <Exception>("\n", e.LoaderExceptions)); } } }