Esempio n. 1
0
        private CloudDriveFactory InitializeCloudDriveFactory(string libPath)
        {
            CompositionInitializer.Preload(typeof(CloudFS.Interface.Composition.ICloudGateway));
            CompositionInitializer.Initialize(new[] { typeof(Program).Assembly }, libPath, "IgorSoft.CloudFS.Gateways.*.dll");
            var factory = new CloudDriveFactory();

            CompositionInitializer.SatisfyImports(factory);
            return(factory);
        }
        public void CompositionInitializer_SatisfyImports_Succeeds()
        {
            CompositionInitializer.Initialize(new[] { typeof(CompositionInitializerTests).Assembly });

            var composablePart = Fixture.GetComposablePart();

            CompositionInitializer.SatisfyImports(composablePart);

            Assert.IsNotNull(composablePart.Component, "Composition of component failed");
        }
        public void CompositionInitializer_InitializeByAssemblies_WhereAssembliesAreSpecified_Succeeds()
        {
            var          onHostInitializedHandled = false;
            EventHandler hostInitializedHandler   = (s, e) => onHostInitializedHandled = true;

            CompositionInitializer.HostInitialized += hostInitializedHandler;
            try {
                CompositionInitializer.Initialize(new[] { typeof(CompositionInitializerTests).Assembly });
            } finally {
                CompositionInitializer.HostInitialized -= hostInitializedHandler;
            }

            Assert.IsTrue(onHostInitializedHandled, "HostInitialized event not handled");
        }
        public void CompositionInitializer_InitializeByPath_WherePathIsSpecifiedWithoutSearchPattern_Succeeds()
        {
            var          onHostInitializedHandled = false;
            EventHandler hostInitializedHandler   = (s, e) => onHostInitializedHandled = true;

            CompositionInitializer.HostInitialized += hostInitializedHandler;
            try {
                CompositionInitializer.Initialize(".");
            } finally {
                CompositionInitializer.HostInitialized -= hostInitializedHandler;
            }

            Assert.IsTrue(onHostInitializedHandled, "HostInitialized event not handled");
        }
        public void CompositionInitializer_InitializeByAssemblies_MoreThanOnce_Throws()
        {
            var          onHostInitializedHandled = false;
            EventHandler hostInitializedHandler   = (s, e) => onHostInitializedHandled = true;

            CompositionInitializer.HostInitialized += hostInitializedHandler;
            try {
                CompositionInitializer.Initialize(Enumerable.Empty <Assembly>());
            } finally {
                CompositionInitializer.HostInitialized -= hostInitializedHandler;
            }

            Assert.IsTrue(onHostInitializedHandled, "HostInitialized event not handled");

            CompositionInitializer.Initialize(Enumerable.Empty <Assembly>());
        }
        public void CompositionInitializer_InitializeByPath_MoreThanOnce_Throws()
        {
            var          onHostInitializedHandled = false;
            EventHandler hostInitializedHandler   = (s, e) => onHostInitializedHandled = true;

            CompositionInitializer.HostInitialized += hostInitializedHandler;
            try {
                CompositionInitializer.Initialize(".", "Missing.dll");
            } finally {
                CompositionInitializer.HostInitialized -= hostInitializedHandler;
            }

            Assert.IsTrue(onHostInitializedHandled, "HostInitialized event not handled");

            CompositionInitializer.Initialize(".", "Missing.dll");
        }
Esempio n. 7
0
        internal static void Main(string[] args)
        {
            var mountSection = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).Sections[MountSection.Name] as MountSection;

            if (mountSection == null)
            {
                throw new ConfigurationErrorsException("Mount configuration missing");
            }

            CompositionInitializer.Preload(typeof(IgorSoft.CloudFS.Interface.Composition.ICloudGateway));
            CompositionInitializer.Initialize(mountSection.LibPath, "IgorSoft.CloudFS.Gateways.*.dll");
            var factory = new CloudDriveFactory();

            CompositionInitializer.SatisfyImports(factory);

            try {
                var logger = new LogFactory().GetCurrentClassLogger();
                using (var tokenSource = new CancellationTokenSource()) {
                    var tasks = new List <Task>();
                    foreach (var drive in mountSection.Drives.Cast <DriveElement>())
                    {
                        var operations = new CloudOperations(factory.CreateCloudDrive(drive.Schema, drive.UserName, drive.Root, new CloudDriveParameters()
                        {
                            EncryptionKey = drive.EncryptionKey, Parameters = drive.GetParameters()
                        }), logger);

                        // HACK: handle non-unique parameter set of DokanOperations.Mount() by explicitely specifying AllocationUnitSize and SectorSize
                        tasks.Add(Task.Run(() => operations.Mount(drive.Root, DokanOptions.RemovableDrive | DokanOptions.MountManager | DokanOptions.CurrentSession, mountSection.Threads, 1100, TimeSpan.FromSeconds(drive.Timeout != 0 ? drive.Timeout : 20), null, 512, 512), tokenSource.Token));

                        var driveInfo = new DriveInfo(drive.Root);
                        while (!driveInfo.IsReady)
                        {
                            Thread.Sleep(10);
                        }
                    }

                    Console.ReadKey(true);

                    tokenSource.Cancel();
                }
            } finally {
                foreach (var drive in mountSection.Drives.Cast <DriveElement>())
                {
                    Dokan.Unmount(drive.Root[0]);
                }
            }
        }
        public void CompositionInitializer_InitializeByPathAndAssemblies_Succeeds()
        {
            var          onHostInitializedHandled = false;
            EventHandler hostInitializedHandler   = (s, e) => onHostInitializedHandled = true;

            CompositionInitializer.HostInitialized += hostInitializedHandler;
            try
            {
                CompositionInitializer.Initialize(Enumerable.Empty <Assembly>(), ".", "Missing.dll");
            }
            finally
            {
                CompositionInitializer.HostInitialized -= hostInitializedHandler;
            }

            Assert.IsTrue(onHostInitializedHandled, "HostInitialized event not handled");
        }
 public static void ResetComposition()
 {
     typeof(CompositionInitializer).GetField("host", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic).SetValue(null, null);
     CompositionInitializer.Initialize(new[] { typeof(AsyncCloudDriveTests).Assembly });
 }
 public static void Initialize()
 {
     CompositionInitializer.Preload(typeof(ICloudGateway));
     CompositionInitializer.Initialize(COMPOSITION_DIRECTORY);
 }
 public void CompositionInitializer_InitializeByPath_WherePathIsNull_Throws()
 {
     CompositionInitializer.Initialize(null, null);
 }
 public void CompositionInitializer_InitializeByAssemblies_WhereAssembliesAreNull_Throws()
 {
     CompositionInitializer.Initialize((IEnumerable <Assembly>)null);
 }