qtmobility/tests/auto/qnetworksession/tst_qnetworksession/tst_qnetworksession.cpp
branchRCL_3
changeset 8 885c2596c964
parent 6 4203353e74ea
equal deleted inserted replaced
7:e2d33e235f7e 8:885c2596c964
    85 
    85 
    86     void sessionStop_data();
    86     void sessionStop_data();
    87     void sessionStop();
    87     void sessionStop();
    88 
    88 
    89     void roamingErrorCodes();
    89     void roamingErrorCodes();
    90     
    90 
    91     void sessionProperties_data();
    91     void sessionProperties_data();
    92     void sessionProperties();
    92     void sessionProperties();
    93 
    93 
    94     void userChoiceSession_data();
    94     void userChoiceSession_data();
    95     void userChoiceSession();
    95     void userChoiceSession();
   670         qDebug("----------4.   Check that stopping a non-opened session stops the other session based on the same configuration");
   670         qDebug("----------4.   Check that stopping a non-opened session stops the other session based on the same configuration");
   671 	qDebug("----------4.1 Opening innocent session");
   671 	qDebug("----------4.1 Opening innocent session");
   672         QVERIFY(openSession(&innocentSession));    
   672         QVERIFY(openSession(&innocentSession));    
   673         qDebug("Waiting for %d ms after open to make sure all platform indications are propagated", configWaitdelayInMs);
   673         qDebug("Waiting for %d ms after open to make sure all platform indications are propagated", configWaitdelayInMs);
   674         QTest::qWait(configWaitdelayInMs);
   674         QTest::qWait(configWaitdelayInMs);
   675     qDebug("----------4.2 Calling closedSession.stop()");
   675         qDebug("----------4.2 Calling closedSession.stop()");
   676         closedSession.stop();
   676         closedSession.stop();
   677         qDebug("Waiting for %d ms to get all configurationChange signals from platform..", configWaitdelayInMs);
   677         qDebug("Waiting for %d ms to get all configurationChange signals from platform..", configWaitdelayInMs);
   678         QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
   678         QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
   679     
   679     
   680 	    QTest::qWait(configWaitdelayInMs);
   680 	    QTest::qWait(configWaitdelayInMs);
   876     }
   876     }
   877 
   877 
   878     // The remaining tests require the session to be not NotAvailable.
   878     // The remaining tests require the session to be not NotAvailable.
   879     if (session.state() == QNetworkSession::NotAvailable)
   879     if (session.state() == QNetworkSession::NotAvailable)
   880         QSKIP("Network is not available.", SkipSingle);
   880         QSKIP("Network is not available.", SkipSingle);
   881 
   881         
   882     QSignalSpy sessionOpenedSpy(&session, SIGNAL(opened()));
   882     QSignalSpy sessionOpenedSpy(&session, SIGNAL(opened()));
   883     QSignalSpy sessionClosedSpy(&session, SIGNAL(closed()));
   883     QSignalSpy sessionClosedSpy(&session, SIGNAL(closed()));
   884     QSignalSpy stateChangedSpy(&session, SIGNAL(stateChanged(QNetworkSession::State)));
   884     QSignalSpy stateChangedSpy(&session, SIGNAL(stateChanged(QNetworkSession::State)));
   885     QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
   885     QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
   886 
   886 
   904         }
   904         }
   905 #else        
   905 #else        
   906         session.waitForOpened();
   906         session.waitForOpened();
   907 #endif        
   907 #endif        
   908 
   908 
       
   909          // Wait until the configuration is uptodate as well, it may be signaled 'connected' 
       
   910          // bit later than the session
       
   911          QTRY_VERIFY(configuration.state() == QNetworkConfiguration::Active);
       
   912 
   909         if (session.isOpen())
   913         if (session.isOpen())
   910             QVERIFY(!sessionOpenedSpy.isEmpty() || !errorSpy.isEmpty());
   914             QVERIFY(!sessionOpenedSpy.isEmpty() || !errorSpy.isEmpty());
   911         if (!errorSpy.isEmpty()) {
   915         if (!errorSpy.isEmpty()) {
       
   916         
   912             QNetworkSession::SessionError error =
   917             QNetworkSession::SessionError error =
   913                 qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
   918                 qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
   914 
   919 
   915             QVERIFY(session.state() == previousState);
   920             QVERIFY(session.state() == previousState);
   916 
   921 
  1070         } else if (!sessionClosedSpy2.isEmpty()) {
  1075         } else if (!sessionClosedSpy2.isEmpty()) {
  1071             if (expectStateChange) {
  1076             if (expectStateChange) {
  1072                 if (configuration.type() == QNetworkConfiguration::ServiceNetwork) {
  1077                 if (configuration.type() == QNetworkConfiguration::ServiceNetwork) {
  1073                     bool roamedSuccessfully = false;
  1078                     bool roamedSuccessfully = false;
  1074 
  1079 
  1075                     QCOMPARE(stateChangedSpy2.count(), 4);
  1080                     QNetworkSession::State state;
  1076 
  1081                     if (stateChangedSpy2.count() == 4) {
  1077                     QNetworkSession::State state =
  1082                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
  1078                         qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
  1083                         QVERIFY(state == QNetworkSession::Connecting);
  1079                     QVERIFY(state == QNetworkSession::Connecting);
  1084 
  1080 
  1085                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
  1081                     state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
  1086                         QVERIFY(state == QNetworkSession::Connected);
  1082                     QVERIFY(state == QNetworkSession::Connected);
  1087 
  1083 
  1088                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(2).at(0));
  1084                     state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(2).at(0));
  1089                         QVERIFY(state == QNetworkSession::Closing);
  1085                     QVERIFY(state == QNetworkSession::Closing);
  1090 
  1086 
  1091                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(3).at(0));
  1087                     state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(3).at(0));
  1092                         QVERIFY(state == QNetworkSession::Disconnected);
  1088                     QVERIFY(state == QNetworkSession::Disconnected);
  1093                     } else if (stateChangedSpy2.count() == 2) {
  1089                     
  1094                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
       
  1095                         QVERIFY(state == QNetworkSession::Closing);
       
  1096 
       
  1097                         state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
       
  1098                         QVERIFY(state == QNetworkSession::Disconnected);
       
  1099                     } else {
       
  1100                         QFAIL("Unexpected amount of state changes when roaming.");
       
  1101                     }
  1090 			
  1102 			
  1091                     QTRY_VERIFY(session.state() == QNetworkSession::Roaming ||
  1103                     QTRY_VERIFY(session.state() == QNetworkSession::Roaming ||
  1092                                 session.state() == QNetworkSession::Connected ||
  1104                                 session.state() == QNetworkSession::Connected ||
  1093                                 session.state() == QNetworkSession::Disconnected);
  1105                                 session.state() == QNetworkSession::Disconnected);
  1094                     
  1106                     
  1106                         QTRY_VERIFY(session.state() == QNetworkSession::Connected);
  1118                         QTRY_VERIFY(session.state() == QNetworkSession::Connected);
  1107                         QTRY_VERIFY(session2.state() == QNetworkSession::Connected);
  1119                         QTRY_VERIFY(session2.state() == QNetworkSession::Connected);
  1108                         roamedSuccessfully = true;
  1120                         roamedSuccessfully = true;
  1109                     } else if (state == QNetworkSession::Closing) {
  1121                     } else if (state == QNetworkSession::Closing) {
  1110                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
  1122                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
  1111                         QTRY_VERIFY(session.state() == QNetworkSession::Connected);
  1123                         QTRY_VERIFY(session.state() == QNetworkSession::Connected || 
  1112                         roamedSuccessfully = true;
  1124                         	session.state() == QNetworkSession::Disconnected);
       
  1125                         roamedSuccessfully = false;
  1113                     } else if (state == QNetworkSession::Disconnected) {
  1126                     } else if (state == QNetworkSession::Disconnected) {
  1114                         QTRY_VERIFY(!errorSpy.isEmpty());
  1127                         QTRY_VERIFY(!errorSpy.isEmpty());
  1115                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
  1128                         QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
  1116                   	} else if (state == QNetworkSession::Connected) {
  1129                   	} else if (state == QNetworkSession::Connected) {
  1117                         QTRY_VERIFY(errorSpy.isEmpty());
  1130                         QTRY_VERIFY(errorSpy.isEmpty());
  1119                         if (stateChangedSpy.count() > 1) {
  1132                         if (stateChangedSpy.count() > 1) {
  1120                             state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 2).at(0));                        
  1133                             state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 2).at(0));                        
  1121                             QVERIFY(state == QNetworkSession::Roaming);
  1134                             QVERIFY(state == QNetworkSession::Roaming);
  1122                         }
  1135                         }
  1123                         roamedSuccessfully = true;
  1136                         roamedSuccessfully = true;
  1124                   	}
  1137                     }
  1125 
  1138 
  1126                     if (roamedSuccessfully) {
  1139                     if (roamedSuccessfully) {
       
  1140                         // Verify that you can open session based on the disconnected configuration
  1127                         QString configId = session.sessionProperty("ActiveConfiguration").toString();
  1141                         QString configId = session.sessionProperty("ActiveConfiguration").toString();
  1128                         QNetworkConfiguration config = manager.configurationFromIdentifier(configId); 
  1142                         QNetworkConfiguration config = manager.configurationFromIdentifier(configId);
  1129                         QNetworkSession session3(config);
  1143                         QNetworkSession session3(config);
  1130                         QSignalSpy errorSpy3(&session3, SIGNAL(error(QNetworkSession::SessionError)));
  1144                         QSignalSpy errorSpy3(&session3, SIGNAL(error(QNetworkSession::SessionError)));
  1131                         QSignalSpy sessionOpenedSpy3(&session3, SIGNAL(opened()));
  1145                         QSignalSpy sessionOpenedSpy3(&session3, SIGNAL(opened()));
  1132                         session3.open();
  1146                         session3.open();
  1133                         session3.waitForOpened();      
  1147                         session3.waitForOpened();
       
  1148                         QTest::qWait(1000); // Wait awhile to get all signals from platform
  1134                         if (session.isOpen())
  1149                         if (session.isOpen())
  1135                             QVERIFY(!sessionOpenedSpy3.isEmpty() || !errorSpy3.isEmpty());
  1150                             QVERIFY(!sessionOpenedSpy3.isEmpty() || !errorSpy3.isEmpty());
  1136                         session.stop();
  1151                         session.stop();
  1137                         QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
  1152                         QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
  1138                     }
  1153                     }