コード例 #1
0
        public void IntrospectRemoteObject()
        {
            AllJoyn.BusAttachment busAttachment = new AllJoyn.BusAttachment("ProxyBusObjectTest", false);
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Start());
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.ProxyBusObject proxyBusObject = new AllJoyn.ProxyBusObject(busAttachment, "org.alljoyn.Bus", "/org/alljoyn/Bus", 0);
            Assert.NotNull(proxyBusObject);

            Assert.Equal(AllJoyn.QStatus.OK, proxyBusObject.IntrospectRemoteObject());

            AllJoyn.InterfaceDescription interfaceDescription = proxyBusObject.GetInterface("org.freedesktop.DBus.Introspectable");

            string expectedIntrospect = "<interface name=\"org.freedesktop.DBus.Introspectable\">\n" +
                                        "  <method name=\"Introspect\">\n" +
                                        "    <arg name=\"data\" type=\"s\" direction=\"out\"/>\n" +
                                        "  </method>\n" +
                                        "</interface>\n";

            Assert.Equal(expectedIntrospect, interfaceDescription.Introspect());


            proxyBusObject.Dispose();
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Stop());
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Join());
            busAttachment.Dispose();
        }
コード例 #2
0
ファイル: AuthListenerTest.cs プロジェクト: sindab/alljoyn
        public AllJoyn.QStatus SetUpAuthClient()
        {
            AllJoyn.QStatus        status   = AllJoyn.QStatus.FAIL;
            AllJoyn.ProxyBusObject proxyObj = new AllJoyn.ProxyBusObject(clientBus, WELLKNOWN_NAME, OBJECT_PATH, 0);

            status = proxyObj.IntrospectRemoteObject();
            if (!status)
            {
                return(status);
            }

            AllJoyn.Message reply = new AllJoyn.Message(clientBus);
            AllJoyn.MsgArg  input = new AllJoyn.MsgArg("s", "AllJoyn");
            Console.WriteLine(proxyObj.GetInterface(INTERFACE_NAME).Introspect());

            status = proxyObj.MethodCall(INTERFACE_NAME, "ping", input, reply, 5000, 0);
            if (!status)
            {
                return(status);
            }

            if ((string)reply[0] != "AllJoyn")
            {
                Console.WriteLine((string)reply[0] + " != \"AllJoyn\" as expected");
                return(AllJoyn.QStatus.FAIL);
            }
            return(status);
        }
コード例 #3
0
ファイル: ProxyBusObjectTest.cs プロジェクト: sindab/alljoyn
        public void ImplementsInterface()
        {
            proxyBusObject = new AllJoyn.ProxyBusObject(busAttachment, "org.alljoyn.Bus", "/org/alljoyn/Bus", 0);
            Assert.NotNull(proxyBusObject);

            Assert.Equal(AllJoyn.QStatus.OK, proxyBusObject.IntrospectRemoteObject());

            Assert.True(proxyBusObject.ImplementsInterface("org.alljoyn.Bus"));
            Assert.True(proxyBusObject.ImplementsInterface("org.alljoyn.Daemon"));
            Assert.False(proxyBusObject.ImplementsInterface("org.alljoyn.Invalid"));
        }
コード例 #4
0
 protected override void NameOwnerChanged(string busName, string previousOwner, string newOwner)
 {
     AllJoyn.QStatus        status = AllJoyn.QStatus.FAIL;
     AllJoyn.ProxyBusObject proxy  = new AllJoyn.ProxyBusObject(mbus, "org.alljoyn.Bus", "/org/alljoyn/Bus", 0);
     Assert.NotNull(proxy);
     status = proxy.IntrospectRemoteObject();
     proxy.Dispose();
     _concurrentCallbackTest.callbackStatus       = status;
     _concurrentCallbackTest.nameOwnerChangedFlag = true;
     Notify();
 }
コード例 #5
0
        public void ImplementsInterface()
        {
            AllJoyn.BusAttachment busAttachment = new AllJoyn.BusAttachment("ProxyBusObjectTest", false);
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Start());
            Assert.Equal(AllJoyn.QStatus.OK, busAttachment.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.ProxyBusObject proxyBusObject = new AllJoyn.ProxyBusObject(busAttachment, "org.alljoyn.Bus", "/org/alljoyn/Bus", 0);
            Assert.NotNull(proxyBusObject);

            Assert.Equal(AllJoyn.QStatus.OK, proxyBusObject.IntrospectRemoteObject());

            Assert.True(proxyBusObject.ImplementsInterface("org.alljoyn.Bus"));
            Assert.True(proxyBusObject.ImplementsInterface("org.alljoyn.Daemon"));
            Assert.False(proxyBusObject.ImplementsInterface("org.alljoyn.Invalid"));
        }
コード例 #6
0
ファイル: ProxyBusObjectTest.cs プロジェクト: sindab/alljoyn
        public void IntrospectRemoteObject()
        {
            proxyBusObject = new AllJoyn.ProxyBusObject(busAttachment, "org.alljoyn.Bus", "/org/alljoyn/Bus", 0);
            Assert.NotNull(proxyBusObject);

            Assert.Equal(AllJoyn.QStatus.OK, proxyBusObject.IntrospectRemoteObject());

            AllJoyn.InterfaceDescription interfaceDescription = proxyBusObject.GetInterface("org.freedesktop.DBus.Introspectable");

            string expectedIntrospect = "<interface name=\"org.freedesktop.DBus.Introspectable\">\n" +
                                        "  <method name=\"Introspect\">\n" +
                                        "    <arg name=\"data\" type=\"s\" direction=\"out\"/>\n" +
                                        "  </method>\n" +
                                        "</interface>\n";

            Assert.Equal(expectedIntrospect, interfaceDescription.Introspect());
        }
コード例 #7
0
        public void InterfaceDescriptionEquals()
        {
            AllJoyn.BusAttachment servicebus = null;
            servicebus = new AllJoyn.BusAttachment("InterfaceDescriptionTest", true);
            Assert.NotNull(servicebus);

            // create the interface one
            AllJoyn.InterfaceDescription testIntf = null;
            Assert.Equal(AllJoyn.QStatus.OK, servicebus.CreateInterface(INTERFACE_NAME, out testIntf));
            Assert.NotNull(testIntf);
            Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddMethod("ping", "s", "s", "in,out"));
            Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddSignal("chirp", "s", "chirp"));
            testIntf.Activate();

            Assert.Equal(AllJoyn.QStatus.OK, servicebus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, servicebus.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.BusObject busObject = new AllJoyn.BusObject(OBJECT_PATH, false);
            Assert.Equal(AllJoyn.QStatus.OK, busObject.AddInterface(testIntf));

            Assert.Equal(AllJoyn.QStatus.OK, servicebus.RegisterBusObject(busObject));

            Assert.Equal(AllJoyn.QStatus.OK, servicebus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.AllowReplacement |
                                                                    AllJoyn.DBus.NameFlags.DoNotQueue | AllJoyn.DBus.NameFlags.ReplaceExisting));

            AllJoyn.BusAttachment clientbus = null;
            clientbus = new AllJoyn.BusAttachment("InterfaceDescriptionTestclient", true);
            Assert.NotNull(clientbus);

            Assert.Equal(AllJoyn.QStatus.OK, clientbus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, clientbus.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.ProxyBusObject proxy = new AllJoyn.ProxyBusObject(clientbus, WELLKNOWN_NAME, OBJECT_PATH, 0);
            Assert.Equal(AllJoyn.QStatus.OK, proxy.IntrospectRemoteObject());

            AllJoyn.InterfaceDescription testIntf2 = proxy.GetInterface(INTERFACE_NAME);
            Assert.NotNull(testIntf);

            // create the interface three
            AllJoyn.InterfaceDescription testIntf3 = null;
            Assert.Equal(AllJoyn.QStatus.OK, servicebus.CreateInterface(INTERFACE_NAME + ".three", out testIntf3));
            Assert.NotNull(testIntf3);
            Assert.Equal(AllJoyn.QStatus.OK, testIntf3.AddMethod("ping", "s", "s", "in,out"));
            Assert.Equal(AllJoyn.QStatus.OK, testIntf3.AddMethod("pong", "s", "s", "in,out"));
            Assert.Equal(AllJoyn.QStatus.OK, testIntf3.AddSignal("chirp", "s", "chirp"));

            Assert.True(testIntf == testIntf2);
            Assert.True(testIntf.Equals(testIntf2));
            Assert.True(testIntf.GetHashCode() == testIntf2.GetHashCode());

            Assert.False(testIntf == testIntf3);
            Assert.False(testIntf.Equals(testIntf3));
            Assert.False(testIntf.GetHashCode() == testIntf3.GetHashCode());

            proxy.Dispose();
            busObject.Dispose();

            servicebus.Stop();
            servicebus.Join();

            clientbus.Stop();
            clientbus.Join();

            servicebus.Dispose();
            clientbus.Dispose();
        }
コード例 #8
0
        public void Properties()
        {
            //SetUp Service
            //start service BusAttachment
            AllJoyn.BusAttachment serviceBus = new AllJoyn.BusAttachment("MessageTestService", true);
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Connect(AllJoynTestCommon.GetConnectSpec()));

            TestBusListener testBusListener = new TestBusListener(this);

            serviceBus.RegisterBusListener(testBusListener);

            //Create and activate the service Interface
            AllJoyn.InterfaceDescription testIntf = null;
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.CreateInterface(INTERFACE_NAME, out testIntf));
            Assert.NotNull(testIntf);
            Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "ping", "s", "s", "in,out"));
            testIntf.Activate();

            //create and register BusObject
            MessageTestBusObject busObj = new MessageTestBusObject(OBJECT_PATH);

            busObj.AddInterface(testIntf);
            AllJoyn.InterfaceDescription.Member ping;
            ping = testIntf.GetMember("ping");
            Assert.NotNull(ping);

            Assert.Equal(AllJoyn.QStatus.OK, busObj.AddMethodHandler(ping, busObj.Ping));

            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RegisterBusObject(busObj));

            _nameOwnerChangedFlag = false;
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting |
                                                                    AllJoyn.DBus.NameFlags.DoNotQueue |
                                                                    AllJoyn.DBus.NameFlags.AllowReplacement));
            Wait(TimeSpan.FromSeconds(2));

            Assert.True(_nameOwnerChangedFlag);


            // SetUp Client
            // start client BusAttachment
            AllJoyn.BusAttachment clientBus = new AllJoyn.BusAttachment("MessageTestClient", true);
            Assert.Equal(AllJoyn.QStatus.OK, clientBus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, clientBus.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.ProxyBusObject proxyObj = new AllJoyn.ProxyBusObject(clientBus, INTERFACE_NAME, OBJECT_PATH, 0);

            Assert.Equal(AllJoyn.QStatus.OK, proxyObj.IntrospectRemoteObject());

            AllJoyn.Message reply = new AllJoyn.Message(clientBus);
            AllJoyn.MsgArg  input = new AllJoyn.MsgArg("s", "AllJoyn");

            proxyObj.MethodCall(INTERFACE_NAME, "ping", input, reply, 25000, 0);

            // Actual tests for GetArg/GetArgs
            // check the message properties
            Assert.False(reply.IsBroadcastSignal);
            Assert.False(reply.IsGlobalBroadcast);
            Assert.False(reply.IsSessionless);
            Assert.False(reply.IsExpired());
            uint timeLeft;

            reply.IsExpired(out timeLeft);
            Assert.True(timeLeft > 0);
            Assert.False(reply.IsUnreliable);
            Assert.False(reply.IsEncrypted);
            // we don't expect any flags
            Assert.Equal((byte)0, reply.Flags);
            // no security is being used so there should be no security mechanism
            Assert.Equal("", reply.AuthMechanism);
            Assert.Equal(AllJoyn.Message.Type.MethodReturn, reply.MessageType);
            // The serial is unknown before hand but it should not be zero
            Assert.NotEqual <uint>(0u, reply.CallSerial);
            Assert.NotEqual <uint>(0u, reply.ReplySerial);
            // A method return does not have an Object Path
            Assert.Equal("", reply.ObjectPath);
            // A method return does not have an interface specified
            Assert.Equal("", reply.Interface);
            // The member name is not specified on a message return
            Assert.Equal("", reply.MemberName);
            // TODO possible error the documentation for Sender states it should
            // be returning the well-known name however in this case it is
            // returning the unique name of the sender.
            Assert.Equal(serviceBus.UniqueName, reply.Sender);
            Assert.Equal(clientBus.UniqueName, reply.ReceiveEndPointName);
            Assert.Equal(clientBus.UniqueName, reply.Destination);
            Assert.Equal(0u, reply.CompressionToken);
            // no session set up for this test Session Id should be 0
            Assert.Equal(0u, reply.SessionId);
            String errorMsg;

            // TODO produce test that generates actual error Message
            Assert.Null(reply.GetErrorName(out errorMsg));
            Assert.Equal("", errorMsg);
            // The  ToString method only returns a string when running debug code
#if DEBUG
            Assert.True(reply.ToString().StartsWith("<message endianness="));
            Assert.True(reply.ToString().Contains("<header field=\"REPLY_SERIAL\">"));
            Assert.True(reply.ToString().Contains("<header field=\"DESTINATION\">"));
            Assert.True(reply.ToString().Contains("<header field=\"SENDER\">"));
            Assert.True(reply.ToString().Contains("<header field=\"SIGNATURE\">"));
            Assert.True(reply.ToString().Contains("<signature>s</signature>"));
            Assert.True(reply.ToString().Contains("<string>AllJoyn</string>"));
            Assert.True(reply.ToString().EndsWith("</message>"));

            // this call to description should return 'METHID_RET[<reply serial>](s)'
            Assert.True(reply.Description.StartsWith("METHOD_RET["));
#else
            Assert.Equal("", reply.ToString());
            Assert.Equal("", reply.Description);
#endif
            // TODO figure out a good way to test the TimeStamp property
            //reply.TimeStamp

            // CleanUp
            serviceBus.UnregisterBusListener(testBusListener);
            reply.Dispose();
            input.Dispose();
            proxyObj.Dispose();
            clientBus.Dispose();

            testBusListener.Dispose();
            busObj.Dispose();
            serviceBus.Dispose();
        }
コード例 #9
0
        public void GetArgs()
        {
            //SetUp Service
            //start service BusAttachment
            AllJoyn.BusAttachment serviceBus = new AllJoyn.BusAttachment("MessageTestService", true);
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Connect(AllJoynTestCommon.GetConnectSpec()));

            TestBusListener testBusListener = new TestBusListener(this);

            serviceBus.RegisterBusListener(testBusListener);

            //Create and activate the service Interface
            AllJoyn.InterfaceDescription testIntf = null;
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.CreateInterface(INTERFACE_NAME, out testIntf));
            Assert.NotNull(testIntf);
            Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "ping", "s", "s", "in,out"));
            testIntf.Activate();

            //create and register BusObject
            MessageTestBusObject busObj = new MessageTestBusObject(OBJECT_PATH);

            busObj.AddInterface(testIntf);
            AllJoyn.InterfaceDescription.Member ping;
            ping = testIntf.GetMember("ping");
            Assert.NotNull(ping);

            Assert.Equal(AllJoyn.QStatus.OK, busObj.AddMethodHandler(ping, busObj.Ping));

            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RegisterBusObject(busObj));

            _nameOwnerChangedFlag = false;
            Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting |
                                                                    AllJoyn.DBus.NameFlags.DoNotQueue |
                                                                    AllJoyn.DBus.NameFlags.AllowReplacement));
            Wait(TimeSpan.FromSeconds(2));
            Assert.True(_nameOwnerChangedFlag);


            //SetUp Client
            //start client BusAttachment
            AllJoyn.BusAttachment clientBus = new AllJoyn.BusAttachment("MessageTestClient", true);
            Assert.Equal(AllJoyn.QStatus.OK, clientBus.Start());
            Assert.Equal(AllJoyn.QStatus.OK, clientBus.Connect(AllJoynTestCommon.GetConnectSpec()));

            AllJoyn.ProxyBusObject proxyObj = new AllJoyn.ProxyBusObject(clientBus, WELLKNOWN_NAME, OBJECT_PATH, 0);

            Assert.Equal(AllJoyn.QStatus.OK, proxyObj.IntrospectRemoteObject());

            AllJoyn.Message reply = new AllJoyn.Message(clientBus);
            AllJoyn.MsgArg  input = new AllJoyn.MsgArg("s", "AllJoyn");

            proxyObj.MethodCall(INTERFACE_NAME, "ping", input, reply, 25000, 0);

            //Actual tests for GetArg/GetArgs
            // call using GetArg specifying the array index
            Assert.Equal("AllJoyn", (string)reply.GetArg(0));
            // use the this[] operator call to get the MsgArg
            Assert.Equal("AllJoyn", (string)(reply[0]));
            // Return the MsgArgs note could be multiple values
            AllJoyn.MsgArg replyArg = reply.GetArgs();
            Assert.Equal(1, replyArg.Length);
            Assert.Equal("AllJoyn", (string)replyArg);
            // Parse the Message Drectly
            object replyString;

            Assert.Equal(AllJoyn.QStatus.OK, reply.GetArgs("s", out replyString));
            Assert.Equal("AllJoyn", (string)replyString);

            serviceBus.UnregisterBusListener(testBusListener);
            reply.Dispose();
            input.Dispose();
            proxyObj.Dispose();
            clientBus.Dispose();

            testBusListener.Dispose();
            busObj.Dispose();
            serviceBus.Dispose();
        }