예제 #1
0
 protected override void StartOnSchedule()
 {
     _assemblyLoader.CheckUpdate(false);
 }
예제 #2
0
        public void LoadCheck()
        {
            var path = @"..\..\Sample\sample.dll.zip";

            if (!File.Exists(path))
            {
                // special casing the integration server
                path = @"..\..\Test\Lokad.Cloud.Framework.Test\Sample\sample.dll.zip";
            }

            byte[] buffer;
            using (var dllFile = new FileStream(path, FileMode.Open))
            {
                buffer = new byte[dllFile.Length];
                dllFile.Read(buffer, 0, buffer.Length);
            }

            var storage = GlobalSetup.Container.Resolve <CloudStorageProviders>();

            // put the sample assembly
            storage.BlobStorage.PutBlob(AssemblyLoader.ContainerName, AssemblyLoader.PackageBlobName, buffer);

            var loader = new AssemblyLoader(storage.BlobStorage);

            loader.LoadPackage();
            loader.LoadConfiguration();

            // validate that 'sample.dll' has been loaded
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            Assert.That(assemblies.Any(a => a.FullName.StartsWith("sample")));

            // validate using management class
            var cloudAssemblies = new CloudAssemblies(storage.BlobStorage);

            Assert.That(cloudAssemblies.GetApplicationDefinition().Value.Assemblies.Any(a => a.AssemblyName.StartsWith("sample")));

            // no update, checking
            try
            {
                loader.CheckUpdate(false);
            }
            catch (TriggerRestartException)
            {
                Assert.Fail("Package has not been updated yet.");
            }

            // forcing update, this time using the management class
            cloudAssemblies.UploadApplicationZipContainer(buffer);

            // update, re-checking
            try
            {
                loader.CheckUpdate(false);
                Assert.Fail("Update should have been detected.");
            }
            catch (TriggerRestartException)
            {
                // do nothing
            }
        }