public void TestNameOwnerChanged() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); listenerRegistered = false; nameOwnerChanged = false; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); // test name owner changed status = bus.RequestName(ObjectName, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, nameOwnerChanged); busListener.Dispose(); bus.Dispose(); }
public void TestListenerRegisteredUnregistered() { AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.BusListener busListener = new TestBusListener(this); listenerRegistered = false; listenerUnregistered = false; AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); bus.UnregisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerUnregistered); // TODO: move these into a teardown method? busListener.Dispose(); bus.Dispose(); }
public void TestFoundNameByTransport() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); listenerRegistered = false; foundAdvertisedName = false; nameOwnerChanged = false; transportFound = AllJoyn.TransportMask.None; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); // advertise the name, & see if we find it status = bus.FindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); Assert.Equal(AllJoyn.TransportMask.Local, transportFound); status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.CancelFindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); foundAdvertisedName = false; status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(TimeSpan.FromSeconds(1)); Assert.Equal(false, foundAdvertisedName); busListener.Dispose(); bus.Dispose(); }
public void TestSessionJoined() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); /////////////////////////////////////////////////////////// foundAdvertisedNameFlag = false; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; // try to join the session & verify callbacks are called // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); memberOneBus.RegisterBusListener(busListener); // find the advertised name from the "servicebus" status = memberOneBus.FindAdvertisedName(OBJECT_NAME); Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); // try to join & verify that the sessionedJoined callback was called uint sSessionId; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, null, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); hostBus.ReleaseName(OBJECT_NAME); }
public void TestFoundLostAdvertisedName() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); listenerRegistered = false; foundAdvertisedName = false; lostAdvertisedName = false; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); // advertise the name, & see if we find it status = bus.FindAdvertisedName(ObjectName); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); // stop advertising the name, & see if we lose it status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, lostAdvertisedName); // TODO: move these into a teardown method? busListener.Dispose(); bus.Dispose(); }
public AllJoyn.QStatus SetUpAuthService() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; TestBusListener busListener = new TestBusListener(this); serviceBus.RegisterBusListener(busListener); busObject = new TestBusObject(OBJECT_PATH); AllJoyn.InterfaceDescription ifaceDescritpion = serviceBus.GetInterface(INTERFACE_NAME); status = busObject.AddInterface(ifaceDescritpion); if (!status) { return(status); } AllJoyn.InterfaceDescription.Member ping_member = ifaceDescritpion.GetMethod("ping"); status = busObject.AddMethodHandler(ping_member, busObject.Ping); if (!status) { return(status); } status = serviceBus.RegisterBusObject(busObject, true); if (!status) { return(status); } Assert.True(busObject.IsSecure); status = serviceBus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue | AllJoyn.DBus.NameFlags.AllowReplacement); if (!status) { return(status); } Wait(TimeSpan.FromSeconds(5)); return(status); }
public void TestStopDisconnected() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); listenerRegistered = false; busDisconnected = false; busStopping = false; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); // test disconnecting from the bus status = bus.Disconnect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, busDisconnected); // test stopping the bus status = bus.Stop(); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, busStopping); busListener.Dispose(); bus.Dispose(); }
public void RemoveSessionMember() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; /////////////////////////////////////////////////////////// // Setup the session host /////////////////////////////////////////////////////////// SetupHost(); // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, true, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); /////////////////////////////////////////////////////////// // Setup session member one /////////////////////////////////////////////////////////// SetupMemberOne(); // register sessionMemberOne's bus listener AllJoyn.BusListener busListenerMemberOne = new TestBusListener(this); memberOneBus.RegisterBusListener(busListenerMemberOne); // create the session listener AllJoyn.SessionListener sessionListener = new TestSessionListener2(this); /////////////////////////////////////////////////////////// // have sessionMemberOne find and join the session foundAdvertisedNameFlag = false; status = memberOneBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); uint sSessionId; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, sessionListener, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberOne joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // Now have the host leave & verify SessionLost callback is triggered sessionLostReasonFlag = false; reasonMarker = AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_INVALID; sessionMemberRemovedFlag = false; hostBus.RemoveSessionMember(sSessionId, memberOneBus.UniqueName); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionLostReason"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionLostReasonFlag); Assert.Equal(AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_REMOVED_BY_BINDER, reasonMarker); // SessionMemberRemoved should also be triggered ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberRemoved"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberRemovedFlag); hostBus.Stop(); hostBus.Join(); hostBus.ReleaseName(OBJECT_NAME); memberOneBus.Stop(); memberOneBus.Join(); memberOneBus.Dispose(); hostBus.Dispose(); }
public void TestSessionMemberAddRemove() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; sessionMemberAddedFlag = false; // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, true, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); // register sessionMemberOne's bus listener AllJoyn.BusListener busListenerMemberOne = new TestBusListener(this); memberOneBus.RegisterBusListener(busListenerMemberOne); // create the session listener AllJoyn.SessionListener sessionListener = new TestSessionListener2(this); AllJoyn.BusListener busListenerMemberTwo = new TestBusListener(this); memberTwoBus.RegisterBusListener(busListenerMemberTwo); /////////////////////////////////////////////////////////// // have sessionMemberOne find and join the session foundAdvertisedNameFlag = false; status = memberOneBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); uint sSessionId; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, sessionListener, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberOne joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // have session member two find and join the session sessionMemberAddedFlag = false; foundAdvertisedNameFlag = false; status = memberTwoBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberTwoBus.JoinSession(OBJECT_NAME, SERVICE_PORT, null, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberTwo joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // Now that sessionMemberTwo has joined, the SessionMemberAdded callback should have been triggered ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberAdded"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberAddedFlag); /////////////////////////////////////////////////////////// // Now have sessionMemberTwo leave & verify SessionMemberRemoved callback is triggered sessionMemberRemovedFlag = false; memberTwoBus.LeaveSession(sSessionId); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberRemoved"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberRemovedFlag); hostBus.ReleaseName(OBJECT_NAME); }
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(); }
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(); }
public void TestAddMethodHandler() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // create+start+connect bus attachment AllJoyn.BusAttachment servicebus = null; servicebus = new AllJoyn.BusAttachment("BusObjectTestService", true); Assert.NotNull(servicebus); status = servicebus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); status = servicebus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); // create+activate the interface AllJoyn.InterfaceDescription testIntf = null; status = servicebus.CreateInterface(INTERFACE_NAME, out testIntf); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.NotNull(testIntf); status = testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "ping", "s", "s", "in,out"); Assert.Equal(AllJoyn.QStatus.OK, status); testIntf.Activate(); // register bus listener AllJoyn.BusListener testBusListener = new TestBusListener(this); servicebus.RegisterBusListener(testBusListener); // create the bus object // the MethodTestBusObject constructor adds the interface & a handler for the ping method MethodTestBusObject methodTestBusObject = new MethodTestBusObject(servicebus, OBJECT_PATH); // register the bus object status = servicebus.RegisterBusObject(methodTestBusObject); Assert.Equal(AllJoyn.QStatus.OK, status); // request name nameOwnerChangedFlag = false; status = servicebus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, nameOwnerChangedFlag); /////////////////////////////////////////////////////////// // create the proxy bus object & call methods AllJoyn.BusAttachment bus = null; bus = new AllJoyn.BusAttachment("BusObjectTest", true); Assert.NotNull(bus); status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); // create+activate the interface AllJoyn.InterfaceDescription iFace = null; status = bus.CreateInterface(INTERFACE_NAME, out iFace); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.NotNull(iFace); status = iFace.AddMember(AllJoyn.Message.Type.MethodCall, "ping", "s", "s", "in,out"); Assert.Equal(AllJoyn.QStatus.OK, status); iFace.Activate(); AllJoyn.ProxyBusObject proxyBusObject = new AllJoyn.ProxyBusObject(bus, OBJECT_NAME, OBJECT_PATH, 0); status = proxyBusObject.AddInterface(iFace); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.MsgArg input = new AllJoyn.MsgArg(); input.Set("AllJoyn"); AllJoyn.Message replyMsg = new AllJoyn.Message(bus); status = proxyBusObject.MethodCall(INTERFACE_NAME, "ping", input, replyMsg, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("AllJoyn", (string)replyMsg[0]); //continue testing obsolete method calls till they are removed. #pragma warning disable 618 AllJoyn.MsgArg input1 = new AllJoyn.MsgArg(); input1.Set("AllJoyn"); AllJoyn.Message replyMsg1 = new AllJoyn.Message(bus); status = proxyBusObject.MethodCallSynch(INTERFACE_NAME, "ping", input1, replyMsg1, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("AllJoyn", (string)replyMsg1[0]); AllJoyn.MsgArgs input2 = new AllJoyn.MsgArgs(1); input2[0].Set("AllJoyn"); AllJoyn.Message replyMsg2 = new AllJoyn.Message(bus); status = proxyBusObject.MethodCallSynch(INTERFACE_NAME, "ping", input2, replyMsg2, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("AllJoyn", (string)replyMsg2[0]); #pragma warning restore 618 methodTestBusObject.Dispose(); servicebus.Dispose(); // TODO: need to call dispose on proxyBusObject first otherwise you get an AccessViolation??? proxyBusObject.Dispose(); bus.Dispose(); }
public void MethodNoInputParams() { // create+activate the interface AllJoyn.InterfaceDescription testIntf = null; status = servicebus.CreateInterface(INTERFACE_NAME, out testIntf); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.NotNull(testIntf); status = testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "ding", "", "s", "out"); Assert.Equal(AllJoyn.QStatus.OK, status); testIntf.Activate(); // register bus listener AllJoyn.BusListener testBusListener = new TestBusListener(this); servicebus.RegisterBusListener(testBusListener); // create the bus object // the dingBusObject constructor adds the interface & a handler for the ping method DingBusObject dingBusObject = new DingBusObject(servicebus, OBJECT_PATH); // register the bus object status = servicebus.RegisterBusObject(dingBusObject); Assert.Equal(AllJoyn.QStatus.OK, status); // request name nameOwnerChangedFlag = false; status = servicebus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue | AllJoyn.DBus.NameFlags.AllowReplacement); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, nameOwnerChangedFlag); /////////////////////////////////////////////////////////// // create+activate the interface AllJoyn.InterfaceDescription iFace = null; status = bus.CreateInterface(INTERFACE_NAME, out iFace); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.NotNull(iFace); status = iFace.AddMethod("ding", "", "s", "in,out"); Assert.Equal(AllJoyn.QStatus.OK, status); iFace.Activate(); proxyBusObject = new AllJoyn.ProxyBusObject(bus, OBJECT_NAME, OBJECT_PATH, 0); status = proxyBusObject.AddInterface(iFace); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.Message replyMsg = new AllJoyn.Message(bus); status = proxyBusObject.MethodCall(INTERFACE_NAME, "ding", AllJoyn.MsgArg.Zero, replyMsg, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("Hello from Ding.", (string)replyMsg[0]); //continue testing obsolete method calls till they are removed. #pragma warning disable 618 AllJoyn.Message replyMsg1 = new AllJoyn.Message(bus); status = proxyBusObject.MethodCallSynch(INTERFACE_NAME, "ding", AllJoyn.MsgArg.Zero, replyMsg1, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("Hello from Ding.", (string)replyMsg1[0]); AllJoyn.Message replyMsg2 = new AllJoyn.Message(bus); status = proxyBusObject.MethodCallSynch(INTERFACE_NAME, "ding", AllJoyn.MsgArg.Zero, replyMsg2, 5000, 0); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.Equal("Hello from Ding.", (string)replyMsg2[0]); #pragma warning restore 618 dingBusObject.Dispose(); }
public void RemoveSessionMember() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, true, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); // register sessionMemberOne's bus listener AllJoyn.BusListener busListenerMemberOne = new TestBusListener(this); memberOneBus.RegisterBusListener(busListenerMemberOne); // create the session listener AllJoyn.SessionListener sessionListener = new TestSessionListener2(this); /////////////////////////////////////////////////////////// // have sessionMemberOne find and join the session foundAdvertisedNameFlag = false; status = memberOneBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); uint sSessionId; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, sessionListener, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberOne joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // Now have the host leave & verify SessionLost callback is triggered sessionLostReasonFlag = false; reasonMarker = AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_INVALID; sessionMemberRemovedFlag = false; hostBus.RemoveSessionMember(sSessionId, memberOneBus.UniqueName); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionLostReason"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionLostReasonFlag); Assert.Equal(AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_REMOVED_BY_BINDER, reasonMarker); // SessionMemberRemoved should also be triggered ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberRemoved"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberRemovedFlag); hostBus.ReleaseName(OBJECT_NAME); }
public AllJoyn.QStatus SetUpAuthService() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; TestBusListener busListener = new TestBusListener(this); serviceBus.RegisterBusListener(busListener); busObject = new TestBusObject(OBJECT_PATH); AllJoyn.InterfaceDescription ifaceDescritpion = serviceBus.GetInterface(INTERFACE_NAME); status = busObject.AddInterface(ifaceDescritpion); if (!status) { return status; } AllJoyn.InterfaceDescription.Member ping_member = ifaceDescritpion.GetMethod("ping"); status = busObject.AddMethodHandler(ping_member, busObject.Ping); if (!status) { return status; } status = serviceBus.RegisterBusObject(busObject); if (!status) { return status; } status = serviceBus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue | AllJoyn.DBus.NameFlags.AllowReplacement); if (!status) { return status; } Wait(TimeSpan.FromSeconds(5)); return status; }
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(); }