Exemplo n.º 1
0
 public static void SetLogHook(LogHook hook)
 {
     lock (LogMutex)
     {
         LogHook = hook;
     }
 }
Exemplo n.º 2
0
		public void Hook_can_NOT_see_GetType_method()
		{
			var hook = new LogHook(typeof(EmptyClass));

			generator.CreateClassProxy(typeof(EmptyClass), new ProxyGenerationOptions(hook));

			var getType = typeof(EmptyClass).GetMethod("GetType");
			CollectionAssert.DoesNotContain(hook.AskedMembers, getType);
			CollectionAssert.DoesNotContain(hook.NonVirtualMembers, getType);
		}
        public void Hook_does_NOT_get_notified_about_autoproperty_field()
        {
            var hook = new LogHook(typeof(VirtualClassWithAutoProperty), false);

            generator.CreateClassProxyWithTarget(typeof(VirtualClassWithAutoProperty), Type.EmptyTypes,
                                                 new VirtualClassWithAutoProperty(), new ProxyGenerationOptions(hook),
                                                 new object[0]);

            Assert.False(hook.NonVirtualMembers.Any(m => m is FieldInfo));
        }
Exemplo n.º 4
0
        public void Test_Standard_AddSameHookWithDifferentGuid()
        {
            LogHook logHook1 = new LogHook(); /* Default Guid */
            LogHook logHook2 = new LogHook();

            logHook2.Id = new Guid("B9D2D1E3-6BAD-47C3-AEFC-3ABFAAB210F8");

            hookRepository.Add(new[] { logHook1, logHook2 });

            Assert.AreEqual(2, hookRepository.Hooks.Length);
        }
Exemplo n.º 5
0
        public void Test_Standard_AddSameHookWithDifferentName()
        {
            LogHook logHook1 = new LogHook(); /* Default Guid, Name */
            LogHook logHook2 = new LogHook();

            logHook2.Name = "LogHook2";

            hookRepository.Add(new[] { logHook1, logHook2 });

            Assert.AreNotEqual(2, hookRepository.Hooks.Length); /* Comparison is done based on Guid and not Name */
        }
        public void Hook_gets_notified_about_static_methods()
        {
            var hook = new LogHook(typeof(VirtualClassWithPublicField), false);

            generator.CreateClassProxyWithTarget(typeof(VirtualClassWithPublicField), Type.EmptyTypes,
                                                 new VirtualClassWithPublicField(), new ProxyGenerationOptions(hook),
                                                 new object[0]);
            Assert.IsNotEmpty((ICollection)hook.NonVirtualMembers);
            var memberInfo = hook.NonVirtualMembers.Single(m => m is FieldInfo);

            Assert.AreEqual("field", memberInfo.Name);
            Assert.AreEqual(MemberTypes.Field, memberInfo.MemberType);
        }
Exemplo n.º 7
0
		public void HookIsUsedForConcreteClassProxy()
		{
			var logger = new LogInvocationInterceptor();
			var hook = new LogHook(typeof(ServiceClass), true);

			var options = new ProxyGenerationOptions(hook);

			var proxy = (ServiceClass)generator.CreateClassProxy(typeof(ServiceClass), options, logger);

			Assert.IsTrue(hook.Completed);
			Assert.AreEqual(13, hook.AskedMembers.Count, "Asked members");
			Assert.AreEqual(2, hook.NonVirtualMembers.Count, "Non-virtual members");

			proxy.Sum(1, 2);
			Assert.IsFalse(proxy.Valid);

			Assert.AreEqual("get_Valid ", logger.LogContents);
		}
Exemplo n.º 8
0
		public void HookDetectsNonVirtualAlthoughInterfaceImplementation()
		{
			var logger = new LogInvocationInterceptor();
			var hook = new LogHook(typeof(ServiceImpl), true);

			var options = new ProxyGenerationOptions(hook);

			// we are creating a class proxy although the creation of an interface proxy is possible too...
			// since the members of our implementation are not explicitly marked as virtual, the runtime
			// marks them as virtual but final --> not good for us, but intended by .net :-(
			//
			// see: https://msdn.microsoft.com/library/system.reflection.methodbase.isvirtual
			//
			// thus, a non virtual notification for this particular situation is appropriate
			generator.CreateClassProxy(typeof(ServiceImpl), options, logger);

			Assert.IsTrue(hook.Completed);
			Assert.AreEqual(3, hook.AskedMembers.Count);
			Assert.AreEqual(11, hook.NonVirtualMembers.Count);
		}
Exemplo n.º 9
0
		public void HookIsUsedForInterfaceProxy()
		{
			var logger = new LogInvocationInterceptor();
			var hook = new LogHook(typeof(IService), false);

			var options = new ProxyGenerationOptions(hook);

			var proxy = (IService)
			            generator.CreateInterfaceProxyWithTarget(
			            	typeof(IService), new ServiceImpl(), options, logger);

			Assert.IsTrue(hook.Completed);
			Assert.AreEqual(10, hook.AskedMembers.Count);
			Assert.AreEqual(0, hook.NonVirtualMembers.Count);

			Assert.AreEqual(3, proxy.Sum(1, 2));
			Assert.IsFalse(proxy.Valid);

			Assert.AreEqual("Sum get_Valid ", logger.LogContents);
		}
Exemplo n.º 10
0
 static MessageBus()
 {
     InnerBus = new MessageRouter <PWMessage>();
     hook     = new LogHook();
     InnerBus.RegisterHook(hook);
 }
		public void GetHashCode_DifferentOptions_Hook()
		{
			IProxyGenerationHook hook = new LogHook(typeof (object), true);
			_options1.Hook = hook;

			Assert.AreNotEqual(_options1.GetHashCode(), _options2.GetHashCode());
		}
		public void Hook_gets_notified_about_static_methods()
		{
			var hook = new LogHook(typeof(VirtualClassWithPublicField), false);
			generator.CreateClassProxyWithTarget(typeof(VirtualClassWithPublicField), Type.EmptyTypes,
			                                     new VirtualClassWithPublicField(), new ProxyGenerationOptions(hook),
			                                     new object[0]);
			Assert.IsNotEmpty((ICollection) hook.NonVirtualMembers);
			var memberInfo = hook.NonVirtualMembers.Single(m => m is FieldInfo);
			Assert.AreEqual("field", memberInfo.Name);
			Assert.AreEqual(MemberTypes.Field, memberInfo.MemberType);
		}
		public void Hook_does_NOT_get_notified_about_autoproperty_field()
		{
			var hook = new LogHook(typeof(VirtualClassWithAutoProperty), false);

			generator.CreateClassProxyWithTarget(typeof(VirtualClassWithAutoProperty), Type.EmptyTypes,
			                                     new VirtualClassWithAutoProperty(), new ProxyGenerationOptions(hook),
			                                     new object[0]);

			Assert.False(hook.NonVirtualMembers.Any(m => m is FieldInfo));
		}
Exemplo n.º 14
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public static java.io.File[] filterNeostoreLogicalLog(org.neo4j.kernel.impl.transaction.log.files.LogFiles logFiles, org.neo4j.io.fs.FileSystemAbstraction fileSystem, LogHook<org.neo4j.kernel.impl.transaction.log.entry.LogEntry> filter) throws java.io.IOException
        public static File[] FilterNeostoreLogicalLog(LogFiles logFiles, FileSystemAbstraction fileSystem, LogHook <LogEntry> filter)
        {
            File[] files = logFiles.LogFilesConflict();
            foreach (File file in files)
            {
                FilterTransactionLogFile(fileSystem, file, filter);
            }

            return(files);
        }
Exemplo n.º 15
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: static void filterTransactionLogFile(org.neo4j.io.fs.FileSystemAbstraction fileSystem, java.io.File file, final LogHook<org.neo4j.kernel.impl.transaction.log.entry.LogEntry> filter) throws java.io.IOException
//JAVA TO C# CONVERTER WARNING: 'final' parameters are ignored unless the option to convert to C# 7.2 'in' parameters is selected:
        internal static void FilterTransactionLogFile(FileSystemAbstraction fileSystem, File file, LogHook <LogEntry> filter)
        {
            filter.File(file);
            using (StoreChannel @in = fileSystem.Open(file, OpenMode.READ))
            {
                LogHeader logHeader = readLogHeader(ByteBuffer.allocate(LOG_HEADER_SIZE), @in, true, file);
                PhysicalLogVersionedStoreChannel inChannel = new PhysicalLogVersionedStoreChannel(@in, logHeader.LogVersion, logHeader.LogFormatVersion);
                ReadableLogChannel inBuffer = new ReadAheadLogChannel(inChannel);
                LogEntryReader <ReadableLogChannel> entryReader = new VersionAwareLogEntryReader <ReadableLogChannel>();

                LogEntry entry;
                while ((entry = entryReader.ReadLogEntry(inBuffer)) != null)
                {
                    filter.test(entry);
                }
            }
        }
Exemplo n.º 16
0
		public void Hook_can_NOT_see_MemberwiseClone_method()
		{
			var hook = new LogHook(typeof(EmptyClass));

			generator.CreateClassProxy(typeof(EmptyClass), new ProxyGenerationOptions(hook));

			var memberwiseClone = typeof(EmptyClass).GetMethod("MemberwiseClone", BindingFlags.NonPublic | BindingFlags.Instance);
			CollectionAssert.DoesNotContain(hook.AskedMembers, memberwiseClone);
			CollectionAssert.DoesNotContain(hook.NonVirtualMembers, memberwiseClone);
		}
		public void Equals_DifferentOptions_Hook()
		{
			IProxyGenerationHook hook = new LogHook(typeof(object), true);
			_options1.Hook = hook;

			Assert.AreNotEqual(_options1, _options2);
		}
Exemplo n.º 18
0
		public void Hook_can_see_ToString_method()
		{
			var hook = new LogHook(typeof(EmptyClass));

			generator.CreateClassProxy(typeof(EmptyClass), new ProxyGenerationOptions(hook));

			var equals = typeof(EmptyClass).GetMethod("ToString");
			CollectionAssert.Contains(hook.AskedMembers, equals);
		}
Exemplo n.º 19
0
		public void Hook_can_see_GetHashCode_method()
		{
			var hook = new LogHook(typeof(EmptyClass));

			generator.CreateClassProxy(typeof(EmptyClass), new ProxyGenerationOptions(hook));

			var getHashCode = typeof(EmptyClass).GetMethod("GetHashCode");
			CollectionAssert.Contains(hook.AskedMembers, getHashCode);
		}