public void TestWcfConnector() { INetMXConnector connector = null; const string clientConfig = "remoteServer"; Logger.DebugFormat("Client config used to connect to the MBeanServer: {0}", clientConfig); try { connector = new WcfServiceModelConnector(clientConfig); } catch (Exception) { string msg = string.Format("Unable to create a client connection to the MBeanServer: Client Config-{0}", clientConfig); Logger.Error(msg); Assert.Fail(msg); } connector.Connect(null); using (connector) { Logger.Debug("Starting the connection..."); IMBeanServerConnection remoteServer = connector.MBeanServerConnection; Assert.AreEqual(2, remoteServer.GetMBeanCount()); var name = new ObjectName("MBeanServer:component=ValidMBean"); MBeanInfo info = remoteServer.GetMBeanInfo(name); Assert.AreEqual("MBean", info.Description); Assert.AreEqual("CrimsonLogic.Common.Library.Tests.ValidInstanceMBean, CrimsonLogic.Common.Library.Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5fb9aab394206ec1", info.ClassName); foreach (MBeanAttributeInfo attributeInfo in info.Attributes) { string attribute = string.Format("Attribute {0} ({1}) [{2}{3}]: {4}", attributeInfo.Name, attributeInfo.Description, attributeInfo.Readable ? "r" : "", attributeInfo.Writable ? "w" : "", attributeInfo.Type); Assert.AreEqual("Attribute Counter (Counter value) [rw]: System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", attribute); } int index = 0; foreach (MBeanOperationInfo operationInfo in info.Operations) { string operation = string.Format("Operation {0} ({1}) [{2}]", operationInfo.Name, operationInfo.Description, operationInfo.Impact); Assert.AreEqual( index == 0 ? "Operation AddAmount (Adds specified value to value of the counter) [Unknown]" : "Operation ResetCounter (Sets counter value to 0) [Unknown]", operation); index++; } object counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); remoteServer.SetAttribute(name, "Counter", 5); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(5, counter); remoteServer.Invoke(name, "AddAmount", new object[] { 5 }); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(10, counter); remoteServer.Invoke(name, "ResetCounter", new object[] { }); counter = remoteServer.GetAttribute(name, "Counter"); Assert.AreEqual(0, counter); Logger.Debug("Completed the WCF server-side tests!"); } }