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 } |