TBool TestFrameworkActionsUtils::CheckIfSmsWatcherAlreadyRunningL() { RSocketServ socketServer; RSocket socket; User::LeaveIfError(socketServer.Connect()); CleanupClosePushL(socketServer); TProtocolDesc protoInfo; TProtocolName protocolname; protocolname.Copy(KSmsDatagram); User::LeaveIfError(socketServer.FindProtocol(protocolname,protoInfo)); User::LeaveIfError(socket.Open(socketServer, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol)); CleanupClosePushL(socket); TSmsAddr addr; addr.SetSmsAddrFamily(ESmsAddrRecvAny); TInt err = socket.Bind(addr); socket.CancelAll(); CleanupStack::PopAndDestroy(2); //socketServer, socket return (err == KErrAlreadyExists); }
TBool CSmsReplyToStep::WatchersAlreadyRunningL() { RSocketServ server; RSocket socket; User::LeaveIfError(server.Connect()); CleanupClosePushL(server); // test if it's there... TProtocolDesc protoInfo; TProtocolName protocolname; protocolname.Copy(KSmsDatagram); User::LeaveIfError(server.FindProtocol(protocolname,protoInfo)); User::LeaveIfError(socket.Open(server, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol)); CleanupClosePushL(socket); TSmsAddr addr; addr.SetSmsAddrFamily(ESmsAddrRecvAny); TInt err = socket.Bind(addr); CleanupStack::Pop(2, &server); socket.CancelAll(); socket.Close(); server.Close(); return (err == KErrAlreadyExists); }
// from PDIS miso library // Gets the local device name. // Arguments: // - aName - object to hold the retrieved name. // // Returns an error code. static TInt GetLocalName(TDes& aName) { TInt err = KErrNone; RSocketServ socketServ; err = socketServ.Connect(); if (!err) { TProtocolName protocolName; // address and name queries are apparently supplied // by the BT stack's link manager _LIT(KBtLinkManager, "BTLinkManager"); protocolName.Copy(KBtLinkManager); TProtocolDesc protocolDesc; err = socketServ.FindProtocol(protocolName, protocolDesc); if (!err) { RHostResolver hostResolver; err = hostResolver.Open(socketServ, protocolDesc.iAddrFamily, protocolDesc.iProtocol); if (!err) { err = hostResolver.GetHostName(aName); hostResolver.Close(); } } socketServ.Close(); } return err; }
enum TVerdict CSocketTest8_2::InternalDoTestStepL( void ) { TVerdict verdict = EPass; Logger().WriteFormat(_L("Test Purpose: Ioctl observes InternalOptionBit")); // connect to esock Logger().WriteFormat(_L("Attempting to connect to socket server")); RSocketServ ss; TInt ret = OptimalConnect(ss); CleanupClosePushL(ss); Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // get a protocol Logger().WriteFormat(_L("Attempting to FindProtocol dummy protocol 1")); TProtocolDesc protoInfo; ret = ss.FindProtocol(_L("Dummy Protocol 1"), protoInfo); Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // check internal options bit RSocket socket; Logger().WriteFormat(_L("Opening a new socket")); ret = socket.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol); Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); Logger().WriteFormat(_L("Trying Ioctl on internal options bit")); TRequestStatus stat; socket.Ioctl(KInternalIoctlBit, stat); User::WaitForRequest(stat); Logger().WriteFormat(_L("Ioctl returned with status %S"), &EpocErrorToText(stat.Int())); TESTL(KErrAccessDenied == stat.Int()); Logger().WriteFormat(_L("Trying to SetOpt internal options bit")); ret = socket.SetOpt(KSocketInternalOptionBit, KSOLSocket); Logger().WriteFormat(_L("SetOpt returned %S"), &EpocErrorToText(ret)); TESTL(KErrAccessDenied == ret); Logger().WriteFormat(_L("Trying to GetOpt internal options bit")); TPckgBuf<TBool> boolean; ret = socket.GetOpt(KSocketInternalOptionBit, KSOLSocket, boolean); Logger().WriteFormat(_L("GetOpt returned %S"), &EpocErrorToText(ret)); TESTL(KErrAccessDenied == ret); Logger().WriteFormat(_L("Testing StartL() with Ioctl KDummyIoctlCheckStarted")); socket.Ioctl(KDummyIoctlCheckStarted, stat, NULL, KIoctlDummyLevel); User::WaitForRequest(stat); Logger().WriteFormat(_L("Ioctl returned with status %S"), &EpocErrorToText(stat.Int())); TESTL(KErrNone == stat.Int()); CleanupStack::Pop(&ss); ss.Close(); SetTestStepResult(verdict); return verdict; }
// Looks up the name of the device with the given address. // Arguments: // - wantedAddr - address of the device to look up. Note that the address // is expected without colons!! e.g. "000D9319C868" // - aDeviceName - the object to hold the name once it is found // - ignoreCache - if True, performs a remote name request even if the device // name is known in the cache from a previous request. // // Returns an error code. static TInt LookupName(TBTDevAddr& wantedAddr, THostName* aDeviceName, bool ignoreCache) { TInt err = KErrNone; RSocketServ socketServer; RHostResolver hostResolver; TRequestStatus status; TNameEntry nameEntry; // make a TInquirySockAddr with the address of the device we want to look up TBTSockAddr sockAddr; sockAddr.SetBTAddr(wantedAddr); TInquirySockAddr addr = addr.Cast(sockAddr); // connect err = socketServer.Connect(); if (err) return err; // load protocol for discovery TProtocolDesc protocolDesc; err = socketServer.FindProtocol(_L("BTLinkManager"), protocolDesc); if (!err) { // initialize host resolver err = hostResolver.Open(socketServer, protocolDesc.iAddrFamily, protocolDesc.iProtocol); if (!err) { // Request name lookup. // We don't need to call SetIAC() if we're just doing name lookup. // Don't put KHostResInquiry flag in SetAction(), because that // will start a device inquiry, when we just want to find the one // name. if (ignoreCache) { addr.SetAction(KHostResName|KHostResIgnoreCache); } else { addr.SetAction(KHostResName); } hostResolver.GetByAddress(addr, nameEntry, status); User::WaitForRequest(status); if (status == KErrNone) { *aDeviceName = nameEntry().iName; err = KErrNone; } else { err = KErrGeneral; } hostResolver.Close(); } } socketServer.Close(); return err; }
enum TVerdict CSocketTest8_3::InternalDoTestStepL( void ) { TVerdict verdict = EPass; Logger().WriteFormat(_L("Test Purpose: Ioctl auto bind and check started")); // connect to esock Logger().WriteFormat(_L("Attempting to connect to socket server")); RSocketServ ss; TInt ret = OptimalConnect(ss); CleanupClosePushL(ss); Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // get a protocol Logger().WriteFormat(_L("Attempting to FindProtocol dummy protocol 1")); TProtocolDesc protoInfo; ret = ss.FindProtocol(_L("Dummy Protocol 1"), protoInfo); Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); Logger().WriteFormat(_L("Opening a new socket")); RSocket socket; ret = socket.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol); Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); Logger().WriteFormat(_L("Testing StartL() with Ioctl KDummyIoctlCheckStarted")); TRequestStatus stat; socket.Ioctl(KDummyIoctlCheckStarted, stat, NULL, KIoctlDummyLevel); User::WaitForRequest(stat); Logger().WriteFormat(_L("Ioctl returned with status %S"), &EpocErrorToText(stat.Int())); TESTL(KErrNone == stat.Int()); Logger().WriteFormat(_L("Testing AutoBind()")); TSockAddr addr; Logger().WriteFormat(_L("Trying to Connect socket")); socket.Connect(addr, stat); User::WaitForRequest(stat); Logger().WriteFormat(_L("Connect returned with status %S"), &EpocErrorToText(stat.Int())); TESTL(KErrNone == stat.Int()); Logger().WriteFormat(_L("Checking bound status with Ioctl")); socket.Ioctl(KDummyIoctlCheckBound, stat, NULL, KIoctlDummyLevel); User::WaitForRequest(stat); Logger().WriteFormat(_L("Ioctl returned with status %S"), &EpocErrorToText(stat.Int())); TESTL(KErrNone == stat.Int()); CleanupStack::Pop(&ss); ss.Close(); SetTestStepResult(verdict); return verdict; }
/** RHostResolver::Open() */ void CT_InquirySockAddrData::DoCmdOpenHostResolver(const TDesC& aSection) { RSocketServ sockServ; TPtrC bluetoothSocketName; if(GetStringFromConfig(aSection, KBTSocket(), bluetoothSocketName)) { CT_BluetoothSocketNotifier* bluetoothSocketData=static_cast<CT_BluetoothSocketNotifier*>(GetDataObjectL(bluetoothSocketName)); if ( bluetoothSocketData!=NULL ) { sockServ = bluetoothSocketData->iSocketServer; } else { ERR_PRINTF1(_L("CT_CBluetoothSocketDataPersistentObject is NULL")); SetBlockResult(EFail); } } // Find protocol from socket TProtocolDesc protocolDesc; TInt err=sockServ.FindProtocol(_L("BTLinkManager"), protocolDesc); if ( err!=KErrNone ) { ERR_PRINTF2(_L("iSockServ.FindProtocol(aProtocolName, protocolDesc) = %d"), err); SetBlockResult(EFail); } if ( protocolDesc.iAddrFamily != KBTAddrFamily ) { ERR_PRINTF1(_L("Wrong iAddrFamily")); SetBlockResult(EFail); } INFO_PRINTF1(_L("Close a RHostResolver first...")); iHostResolver.Close(); // Open host resolver INFO_PRINTF1(_L("Create and initialise an RHostResolver")); err=iHostResolver.Open(sockServ, protocolDesc.iAddrFamily, protocolDesc.iProtocol); if ( err!=KErrNone ) { ERR_PRINTF2(_L("iHostResolver.Open(iSockServ, protocolDesc.iAddrFamily, protocolDesc.iProtocol) = %d"), err); SetError(err); } else { iHostResolverOpen = ETrue; INFO_PRINTF1(_L("Create and initialise an RHostResolver Completed...")); } }
LOCAL_C void doMainL() { RSocketServ serv; RSocket socket; User::LeaveIfError(serv.Connect()); CleanupClosePushL(serv); TProtocolDesc protoinfo; TProtocolName protocolname(KSmsDatagram); User::LeaveIfError(serv.FindProtocol(protocolname,protoinfo)); User::LeaveIfError(socket.Open(serv,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol)); TSmsAddr smsaddr; smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly); User::LeaveIfError(socket.Bind(smsaddr)); CleanupClosePushL(socket); CActiveScheduler* iScheduler = new (ELeave) CActiveScheduler; CleanupStack::PushL(iScheduler); CActiveScheduler::Install( iScheduler ); CSmsTestUtils* smsTest = CSmsTestUtils::NewL(test); CleanupStack::PushL(smsTest); TInt nextTest = 0; smsTest->NotifySaPhoneOnL(); smsTest->WaitForInitializeL(); CSmsSendNbsTest* nbsTest = CSmsSendNbsTest::NewL(*smsTest, KNbsScript, nextTest); CleanupStack::PushL(nbsTest); nbsTest->StartL(); CleanupStack::PopAndDestroy(3); //SmsTest, iScheduler CleanupStack::PopAndDestroy(&socket); CleanupStack::PopAndDestroy(&serv); }
enum TVerdict CSocketTest3_1::InternalDoTestStepL( void ) { TVerdict verdict = EPass; Logger().WriteFormat(_L("Test Purpose: Basic Service Resolver")); // connect to esock Logger().WriteFormat(_L("Attempting to connect to socket server")); RSocketServ ss; TInt ret = OptimalConnect(ss); CleanupClosePushL(ss); Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // find dummy protocol 1 TProtocolDesc protoInfo; Logger().WriteFormat(_L("Finding dummy protocol 1")); ret = ss.FindProtocol(_L("Dummy Protocol 1"), protoInfo); Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // open a service resolver on it Logger().WriteFormat(_L("Open Service resolver")); RServiceResolver sr; ret = sr.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol); CleanupClosePushL(sr); Logger().WriteFormat(_L("Open returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // try a GetByName Logger().WriteFormat(_L("Trying GetByName for DummyName")); TPortNum port; ret = sr.GetByName(_L("DummyName"), port); Logger().WriteFormat(_L("GetByName returned %S, port %d"), &EpocErrorToText(ret), port()); TESTL(KErrNone == ret); TESTL(64 == port()); Logger().WriteFormat(_L("Trying GetByName for Bogus")); ret = sr.GetByName(_L("Bogus"), port); Logger().WriteFormat(_L("GetByName returned %S"), &EpocErrorToText(ret)); TESTL(KErrNotFound == ret); // now try Cancel GetByNumber TRequestStatus stat; TServiceName service; Logger().WriteFormat(_L("Trying GetByNumber for 66")); sr.GetByNumber(66, service, stat); Logger().WriteFormat(_L("Cancelling GetByNumber")); sr.Cancel(); User::WaitForRequest(stat); Logger().WriteFormat(_L("Request status is %S"), &EpocErrorToText(stat.Int())); TESTL(KErrCancel == stat.Int()); Logger().WriteFormat(_L("Trying GetByNumber for 21")); ret = sr.GetByNumber(21, service); Logger().WriteFormat(_L("GetByNumber returned %S, service '%S'"), &EpocErrorToText(ret), &service); TESTL(KErrNone == ret); TESTL(_L("DummyService") == service); Logger().WriteFormat(_L("Trying GetByNumber for 22")); ret = sr.GetByNumber(22, service); Logger().WriteFormat(_L("GetByNumber returned %S"), &EpocErrorToText(ret)); TESTL(KErrNotFound == ret); // register and remove service Logger().WriteFormat(_L("Trying RegisterService for Simpson")); ret = sr.RegisterService(_L("Simpson"),500); Logger().WriteFormat(_L("RegisterService returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); Logger().WriteFormat(_L("Trying RegisterService for Bart")); ret = sr.RegisterService(_L("Bart"), 10); Logger().WriteFormat(_L("RegisterService returned %S"), &EpocErrorToText(ret)); TESTL(KErrNotFound == ret); Logger().WriteFormat(_L("Trying to RemoveService Colt")); ret = sr.RemoveService(_L("Colt"),45); Logger().WriteFormat(_L("RemoveService returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); Logger().WriteFormat(_L("Trying to RemoveService Usi")); ret = sr.RemoveService(_L("Usi"), 9); Logger().WriteFormat(_L("RemoveService returned %S"), &EpocErrorToText(ret)); TESTL(KErrNotFound == ret); Logger().WriteFormat(_L("Close service resolver")); CleanupStack::Pop(&sr); sr.Close(); CleanupStack::Pop(&ss); ss.Close(); SetTestStepResult(verdict); return verdict; }
enum TVerdict CSocketTest7_1::InternalDoTestStepL( void ) { TVerdict verdict = EPass; Logger().WriteFormat(_L("Test Purpose: Alloc Heaven during socket open")); #if defined (_DEBUG_SOCKET_FUNCTIONS) // connect to esock Logger().WriteFormat(_L("Attempting to connect to socket server")); RSocketServ ss; TInt ret = OptimalConnect(ss); CleanupClosePushL(ss); Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // get a protocol Logger().WriteFormat(_L("Attempting to FindProtocol dummy protocol 1")); TProtocolDesc protoInfo; ret = ss.FindProtocol(_L("Dummy Protocol 1"), protoInfo); Logger().WriteFormat(_L("FindProtocol returned %S"), &EpocErrorToText(ret)); TESTL(KErrNone == ret); // Stretch socket arrays in the server. RSocket *sockets = new (ELeave) RSocket[KNumStretchOpens]; CleanupArrayDeletePushL(sockets); TInt i; Logger().WriteFormat(_L("Attempting to Open %d sockets"), KNumStretchOpens); for (i=0; i<KNumStretchOpens; i++) { ret = sockets[i].Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol); if (KErrNone != ret) { Logger().WriteFormat(_L("Open returned %S for socket %d"), &EpocErrorToText(ret), i); TESTL(EFalse); } } Logger().WriteFormat(_L("Closing the first %d sockets"), KNumStretchOpens-1); for (i=0; i<KNumStretchOpens-1; i++) { sockets[i].Close(); } RSocket sock; TInt failure = 0; ret = -1; Logger().WriteFormat(_L("Starting OOM Socket Open Loop")); // ss.__DbgMarkHeap(); // in ESOCKMT leak checking is best done by shutting down the server while (ret != KErrNone) { Logger().WriteFormat(_L("Failing after %d allocs"), failure); ss.__DbgFailNext(failure); ret = sock.Open(ss, protoInfo.iAddrFamily, protoInfo.iSockType, protoInfo.iProtocol); // if (ret != KErrNone) // { // ss.__DbgCheckHeap(0); // } failure++; } Logger().WriteFormat(_L("Created socket OK")); sockets[KNumStretchOpens-1].Close(); CleanupStack::PopAndDestroy(sockets); sock.Close(); // ss.__DbgMarkEnd(0); // Flush any FailNext there might be hanging around. ss.__DbgFailNext(-1); CleanupStack::Pop(&ss); ss.Close(); #else Logger().WriteFormat(_L("TestDisabled on release build.")); verdict = EInconclusive; #endif SetTestStepResult(verdict); return verdict; }
// Performs a device discovery. Blocks until all devices are found. // Arguments: // - aDevDataList - details of each found device will be put in a TDeviceData // and added to this list // - lookupNames - whether to perform name lookups // // Returns an error code. static TInt DiscoverDevices(TDeviceDataList* aDevDataList, bool lookupNames) { TInt err = KErrNone; RSocketServ socketServer; RHostResolver hostResolver; TInquirySockAddr addr; TRequestStatus status; TNameEntry nameEntry; // connect err = socketServer.Connect(); if (err) return err; // load protocol for discovery TProtocolDesc protocolDesc; err = socketServer.FindProtocol(_L("BTLinkManager"), protocolDesc); if (!err) { // initialize host resolver err = hostResolver.Open(socketServer, protocolDesc.iAddrFamily, protocolDesc.iProtocol); if (!err) { // start device discovery by invoking remote address lookup addr.SetIAC(KGIAC); if (lookupNames) { addr.SetAction(KHostResInquiry|KHostResName|KHostResIgnoreCache); } else { addr.SetAction(KHostResInquiry|KHostResIgnoreCache); } hostResolver.GetByAddress(addr, nameEntry, status); while( User::WaitForRequest( status ), (status == KErrNone || status == KRequestPending) ) { // store new device data entry TDeviceData *devData = new (ELeave) TDeviceData(); if (lookupNames) devData->iDeviceName = nameEntry().iName; devData->iDeviceAddr = static_cast<TBTSockAddr>(nameEntry().iAddr).BTAddr(); TInquirySockAddr &isa = TInquirySockAddr::Cast(nameEntry().iAddr); devData->iServiceClass = (TInt16)isa.MajorServiceClass(); devData->iMajorClass = (TInt8)isa.MajorClassOfDevice(); devData->iMinorClass = (TInt8)isa.MinorClassOfDevice(); // add device data entry to list aDevDataList->Append(devData); // get next discovered device hostResolver.Next( nameEntry, status ); } hostResolver.Close(); } } socketServer.Close(); return err; }