qtmobility/tests/auto/qnetworksession/tst_qnetworksession/tst_qnetworksession.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:07 +0100
branchRCL_3
changeset 10 cd2778e5acfe
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     1
/****************************************************************************
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     2
** 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     4
** All rights reserved.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     5
** Contact: Nokia Corporation (qt-info@nokia.com)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     6
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     7
** This file is part of the Qt Mobility Components.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     8
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     9
** $QT_BEGIN_LICENSE:LGPL$
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    10
** No Commercial Usage
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    11
** This file contains pre-release code and may not be distributed.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    12
** You may use this file in accordance with the terms and conditions
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    13
** contained in the Technology Preview License Agreement accompanying
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    14
** this package.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    15
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    16
** GNU Lesser General Public License Usage
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    17
** Alternatively, this file may be used under the terms of the GNU Lesser
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    18
** General Public License version 2.1 as published by the Free Software
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    19
** Foundation and appearing in the file LICENSE.LGPL included in the
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    20
** packaging of this file.  Please review the following information to
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    21
** ensure the GNU Lesser General Public License version 2.1 requirements
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    23
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    24
** In addition, as a special exception, Nokia gives you certain additional
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    25
** rights.  These rights are described in the Nokia Qt LGPL Exception
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    26
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    27
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    28
** If you have questions regarding the use of this file, please contact
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    29
** Nokia at qt-info@nokia.com.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    30
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    31
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    32
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    33
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    34
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    35
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    36
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    37
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    38
** $QT_END_LICENSE$
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    39
**
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    40
****************************************************************************/
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    41
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    42
#include <QtTest/QtTest>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    43
#include <QLocalServer>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    44
#include <QLocalSocket>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    45
#include <QTimer>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    46
#include "../../qbearertestcommon.h"
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    47
#include "../../../../src/bearer/qnetworkconfigmanager.h"
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    48
#include "../../../../src/bearer/qnetworksession.h"
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    49
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    50
#if defined(Q_WS_MAEMO_6) || defined(Q_WS_MAEMO_5)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    51
#include <stdio.h>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    52
#include <iapconf.h>
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    53
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    54
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    55
QTM_USE_NAMESPACE
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    56
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    57
// Can be used to configure tests that require manual attention (such as roaming)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    58
//#define QNETWORKSESSION_MANUAL_TESTS 1
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    59
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    60
Q_DECLARE_METATYPE(QNetworkConfiguration)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    61
Q_DECLARE_METATYPE(QNetworkConfiguration::Type);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    62
Q_DECLARE_METATYPE(QNetworkSession::State);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    63
Q_DECLARE_METATYPE(QNetworkSession::SessionError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    64
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    65
class tst_QNetworkSession : public QObject
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    66
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    67
    Q_OBJECT
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    68
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    69
public slots:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    70
    void initTestCase();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    71
    void cleanupTestCase();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    72
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    73
private slots:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    74
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    75
    void robustnessBombing();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    76
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    77
    void sessionClosing_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    78
    void sessionClosing();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    79
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    80
    void outOfProcessSession();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    81
    void invalidSession();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    82
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    83
    void repeatedOpenClose_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    84
    void repeatedOpenClose();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    85
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    86
    void sessionStop_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    87
    void sessionStop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    88
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    89
    void roamingErrorCodes();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    90
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    91
    void sessionProperties_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    92
    void sessionProperties();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    93
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    94
    void userChoiceSession_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    95
    void userChoiceSession();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    96
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    97
    void sessionOpenCloseStop_data();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    98
    void sessionOpenCloseStop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    99
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   100
private:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   101
    QNetworkConfigurationManager manager;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   102
    QMap<QString, bool> testsToRun;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   103
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   104
    uint inProcessSessionManagementCount;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   105
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   106
#if defined(Q_WS_MAEMO_6) || defined(Q_WS_MAEMO_5)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   107
    Maemo::IAPConf *iapconf;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   108
    Maemo::IAPConf *iapconf2;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   109
    Maemo::IAPConf *gprsiap;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   110
#define MAX_IAPS 10
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   111
    Maemo::IAPConf *iaps[MAX_IAPS];
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   112
    QProcess *icd_stub;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   113
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   114
};
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   115
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   116
// Helper functions
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   117
bool openSession(QNetworkSession *session);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   118
bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration = true);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   119
void updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   120
void printConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   121
QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfiguration::Type configType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   122
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   123
void tst_QNetworkSession::initTestCase()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   124
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   125
    qRegisterMetaType<QNetworkSession::State>("QNetworkSession::State");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   126
    qRegisterMetaType<QNetworkSession::SessionError>("QNetworkSession::SessionError");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   127
    qRegisterMetaType<QNetworkConfiguration>("QNetworkConfiguration");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   128
    qRegisterMetaType<QNetworkConfiguration::Type>("QNetworkConfiguration::Type");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   129
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   130
    // If you wish to skip tests, set value as false. This is often very convinient because tests are so lengthy.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   131
    // Better way still would be to make this readable from a file.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   132
    testsToRun["robustnessBombing"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   133
    testsToRun["sessionClosing"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   134
    testsToRun["outOfProcessSession"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   135
    testsToRun["invalidSession"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   136
    testsToRun["repeatedOpenClose"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   137
    testsToRun["roamingErrorCodes"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   138
    testsToRun["sessionStop"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   139
    testsToRun["sessionProperties"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   140
    testsToRun["userChoiceSession"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   141
    testsToRun["sessionOpenCloseStop"] = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   142
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   143
#if defined(Q_WS_MAEMO_6) || defined(Q_WS_MAEMO_5)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   144
    iapconf = new Maemo::IAPConf("007");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   145
    iapconf->setValue("ipv4_type", "AUTO");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   146
    iapconf->setValue("wlan_wepkey1", "connt");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   147
    iapconf->setValue("wlan_wepdefkey", 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   148
    iapconf->setValue("wlan_ssid", QByteArray("JamesBond"));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   149
    iapconf->setValue("name", "James Bond");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   150
    iapconf->setValue("type", "WLAN_INFRA");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   151
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   152
    gprsiap = new Maemo::IAPConf("This-is-GPRS-IAP");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   153
    gprsiap->setValue("ask_password", false);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   154
    gprsiap->setValue("gprs_accesspointname", "internet");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   155
    gprsiap->setValue("gprs_password", "");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   156
    gprsiap->setValue("gprs_username", "");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   157
    gprsiap->setValue("ipv4_autodns", true);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   158
    gprsiap->setValue("ipv4_type", "AUTO");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   159
    gprsiap->setValue("sim_imsi", "244070123456789");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   160
    gprsiap->setValue("name", "MI6");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   161
    gprsiap->setValue("type", "GPRS");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   162
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   163
    iapconf2 = new Maemo::IAPConf("osso.net");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   164
    iapconf2->setValue("ipv4_type", "AUTO");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   165
    iapconf2->setValue("wlan_wepkey1", "osso.net");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   166
    iapconf2->setValue("wlan_wepdefkey", 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   167
    iapconf2->setValue("wlan_ssid", QByteArray("osso.net"));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   168
    iapconf2->setValue("name", "osso.net");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   169
    iapconf2->setValue("type", "WLAN_INFRA");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   170
    iapconf2->setValue("wlan_security", "WEP");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   171
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   172
    /* Create large number of IAPs in the gconf and see what happens */
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   173
    fflush(stdout);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   174
    printf("Creating %d IAPS: ", MAX_IAPS);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   175
    for (int i=0; i<MAX_IAPS; i++) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   176
	QString num = QString().sprintf("%d", i);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   177
	QString iap = "iap-" + num;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   178
	iaps[i] = new Maemo::IAPConf(iap);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   179
	iaps[i]->setValue("name", QString("test-iap-")+num);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   180
	iaps[i]->setValue("type", "WLAN_INFRA");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   181
	iaps[i]->setValue("wlan_ssid", QString(QString("test-ssid-")+num).toAscii());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   182
	iaps[i]->setValue("wlan_security", "WPA_PSK");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   183
	iaps[i]->setValue("EAP_wpa_preshared_passphrase", QString("test-passphrase-")+num);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   184
	printf(".");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   185
	fflush(stdout);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   186
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   187
    printf("\n");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   188
    fflush(stdout);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   189
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   190
    icd_stub = new QProcess(this);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   191
    icd_stub->start("/usr/bin/icd2_stub.py");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   192
    QTest::qWait(1000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   193
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   194
    // Add a known network to scan list that icd2 stub returns
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   195
    QProcess dbus_send;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   196
    // 007 network
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   197
    dbus_send.start("dbus-send --type=method_call --system "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   198
		    "--dest=com.nokia.icd2 /com/nokia/icd2 "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   199
		    "com.nokia.icd2.testing.add_available_network "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   200
		    "string:'' uint32:0 string:'' "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   201
		    "string:WLAN_INFRA uint32:5000011 array:byte:48,48,55");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   202
    dbus_send.waitForFinished();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   203
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   204
    // osso.net network
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   205
    dbus_send.start("dbus-send --type=method_call --system "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   206
		    "--dest=com.nokia.icd2 /com/nokia/icd2 "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   207
		    "com.nokia.icd2.testing.add_available_network "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   208
		    "string:'' uint32:0 string:'' "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   209
		    "string:WLAN_INFRA uint32:83886097 array:byte:111,115,115,111,46,110,101,116");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   210
    dbus_send.waitForFinished();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   211
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   212
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   213
    inProcessSessionManagementCount = 0;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   214
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   215
    QSignalSpy spy(&manager, SIGNAL(updateCompleted()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   216
    manager.updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   217
    QTRY_VERIFY(spy.count() == 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   218
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   219
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   220
void tst_QNetworkSession::cleanupTestCase()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   221
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   222
    if (!(manager.capabilities() & QNetworkConfigurationManager::SystemSessionSupport) &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   223
        (manager.capabilities() & QNetworkConfigurationManager::CanStartAndStopInterfaces) &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   224
        inProcessSessionManagementCount == 0) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   225
        QFAIL("No usable configurations found to complete all possible "
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   226
              "tests in inProcessSessionManagement()");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   227
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   228
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   229
#if defined(Q_WS_MAEMO_6) || defined(Q_WS_MAEMO_5)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   230
    iapconf->clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   231
    delete iapconf;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   232
    iapconf2->clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   233
    delete iapconf2;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   234
    gprsiap->clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   235
    delete gprsiap;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   236
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   237
    printf("Deleting %d IAPS : ", MAX_IAPS);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   238
    for (int i=0; i<MAX_IAPS; i++) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   239
	iaps[i]->clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   240
	delete iaps[i];
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   241
	printf(".");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   242
	fflush(stdout);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   243
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   244
    printf("\n");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   245
    qDebug() << "Deleted" << MAX_IAPS << "IAPs";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   246
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   247
    icd_stub->terminate();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   248
    icd_stub->waitForFinished();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   249
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   250
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   251
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   252
// Robustness test for calling interfaces in nonsense order / with nonsense parameters
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   253
void tst_QNetworkSession::robustnessBombing() 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   254
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   255
    if (!testsToRun["robustnessBombing"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   256
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   257
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   258
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   259
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   260
    QNetworkSession testSession(mgr.defaultConfiguration());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   261
    // Should not reset even session is not opened
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   262
    testSession.migrate();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   263
    testSession.accept();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   264
    testSession.ignore();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   265
    testSession.reject();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   266
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   267
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   268
void tst_QNetworkSession::sessionClosing_data() {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   269
    QTest::addColumn<QString>("bearerType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   270
    QTest::addColumn<QNetworkConfiguration::Type>("configurationType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   271
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   272
    QTest::newRow("WLAN_IAP") << "WLAN" << QNetworkConfiguration::InternetAccessPoint;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   273
    QTest::newRow("Cellular_IAP") << "cellular" << QNetworkConfiguration::InternetAccessPoint;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   274
    QTest::newRow("SNAP") << "bearer_type_not_relevant_with_SNAPs" << QNetworkConfiguration::ServiceNetwork;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   275
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   276
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   277
// Testcase for closing the session at unexpected times
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   278
void tst_QNetworkSession::sessionClosing()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   279
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   280
    if (!testsToRun["sessionClosing"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   281
        QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   282
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   283
    QFETCH(QString, bearerType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   284
    QFETCH(QNetworkConfiguration::Type, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   285
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   286
    // Update configurations so that WLANs are discovered too.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   287
    updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   288
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   289
    // First check that opening once succeeds and determine if test is doable
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   290
    QNetworkConfiguration config = suitableConfiguration(bearerType, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   291
    if (!config.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   292
        QSKIP("No suitable configurations, skipping this round of repeated open-close test.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   293
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   294
    qDebug() << "Using following configuration to bomb with close(): " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   295
    QNetworkSession session(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   296
    if (!openSession(&session) ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   297
        !closeSession(&session)) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   298
        QSKIP("Unable to open/close session, skipping this round of close() bombing.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   299
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   300
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   301
    qDebug() << "Closing without issuing open()";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   302
    session.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   303
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   304
    for (int i = 0; i < 25; i++) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   305
        qDebug() << "Opening and then waiting: " << i * 100 << " ms before closing.";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   306
        session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   307
        QTest::qWait(i*100);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   308
        session.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   309
        // Sooner or later session must end in Disconnected state,
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   310
        // no matter what the phase was.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   311
        QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   312
        QTest::qWait(200); // Give platform a breathe, otherwise we'll be catching other errors
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   313
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   314
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   315
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   316
void tst_QNetworkSession::invalidSession()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   317
{ 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   318
    if (!testsToRun["invalidSession"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   319
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   320
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   321
    // 1. Verify that session created with invalid configuration remains in invalid state
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   322
    QNetworkSession session(QNetworkConfiguration(), 0);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   323
    QVERIFY(!session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   324
    QVERIFY(session.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   325
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   326
    // 2. Verify that opening session with invalid configuration both 1) emits invalidconfigurationerror and 2) sets session's state as invalid.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   327
    QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   328
    session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   329
    session.waitForOpened(1000); // Should bail out right away
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   330
    QVERIFY(errorSpy.count() == 1); 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   331
    QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   332
           qvariant_cast<QNetworkSession::SessionError> (errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   333
    QVERIFY(error == QNetworkSession::InvalidConfigurationError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   334
    QVERIFY(session.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   335
    	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   336
#ifdef QNETWORKSESSION_MANUAL_TESTS
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   337
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   338
    QNetworkConfiguration invalidatedConfig = suitableConfiguration("WLAN",QNetworkConfiguration::InternetAccessPoint);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   339
    if (invalidatedConfig.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   340
        // 3. Verify that invalidating a session after its successfully configured works
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   341
        QNetworkSession invalidatedSession(invalidatedConfig);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   342
        qDebug() << "Delete the WLAN IAP from phone now (waiting 60 seconds): " << invalidatedConfig.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   343
        QTest::qWait(60000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   344
        QVERIFY(!invalidatedConfig.isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   345
        QVERIFY(invalidatedSession.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   346
        qDebug() << "Add the WLAN IAP back (waiting 60 seconds): " << invalidatedConfig.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   347
        QTest::qWait(60000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   348
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   349
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   350
    QNetworkConfiguration definedConfig = suitableConfiguration("WLAN",QNetworkConfiguration::InternetAccessPoint);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   351
    if (definedConfig.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   352
        // 4. Verify that opening a session with defined configuration emits error and enters notavailable-state
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   353
        // TODO these timer waits should be changed to waiting appropriate signals, now these wait excessively
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   354
        qDebug() << "Shutdown WLAN IAP (waiting 60 seconds): " << definedConfig.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   355
        QTest::qWait(60000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   356
        // Shutting down WLAN should bring back to defined -state.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   357
        QVERIFY((definedConfig.state() & QNetworkConfiguration::Defined) == QNetworkConfiguration::Defined);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   358
        QNetworkSession definedSession(definedConfig);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   359
        QSignalSpy errorSpy(&definedSession, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   360
        QNetworkSession::SessionError sessionError;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   361
        updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   362
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   363
        definedSession.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   364
#ifdef Q_OS_SYMBIAN
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   365
        // On symbian, the connection opening is tried even with defined state.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   366
        qDebug("Waiting for 10 seconds to all signals to propagate.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   367
        QTest::qWait(10000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   368
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   369
        updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   370
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   371
        QVERIFY(definedConfig.isValid()); // Session remains valid
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   372
        QVERIFY(definedSession.state() == QNetworkSession::NotAvailable); // State is not available because WLAN is not in coverage
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   373
        QVERIFY(!errorSpy.isEmpty()); // Session tells with error about invalidated configuration
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   374
        sessionError = qvariant_cast<QNetworkSession::SessionError> (errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   375
        QVERIFY(sessionError == QNetworkSession::InvalidConfigurationError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   376
        qDebug() << "Turn the WLAN IAP back on (waiting 60 seconds): " << definedConfig.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   377
        QTest::qWait(60000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   378
        updateConfigurations();        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   379
        QVERIFY(definedConfig.state() == QNetworkConfiguration::Discovered);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   380
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   381
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   382
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   383
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   384
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   385
void tst_QNetworkSession::sessionProperties_data()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   386
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   387
    QTest::addColumn<QNetworkConfiguration>("configuration");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   388
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   389
    QTest::newRow("invalid configuration") << QNetworkConfiguration();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   390
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   391
    foreach (const QNetworkConfiguration &config, manager.allConfigurations()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   392
        const QString name = config.name().isEmpty() ? QString("<Hidden>") : config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   393
        QTest::newRow(name.toLocal8Bit().constData()) << config;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   394
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   395
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   396
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   397
void tst_QNetworkSession::sessionProperties()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   398
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   399
    if (!testsToRun["sessionProperties"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   400
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   401
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   402
    QFETCH(QNetworkConfiguration, configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   403
    QNetworkSession session(configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   404
    QVERIFY(session.configuration() == configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   405
    QStringList validBearerNames = QStringList() << QLatin1String("Unknown")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   406
                                                 << QLatin1String("Ethernet")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   407
                                                 << QLatin1String("WLAN")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   408
                                                 << QLatin1String("2G")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   409
                                                 << QLatin1String("CDMA2000")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   410
                                                 << QLatin1String("WCDMA")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   411
                                                 << QLatin1String("HSPA")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   412
                                                 << QLatin1String("Bluetooth")
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   413
                                                 << QLatin1String("WiMAX");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   414
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   415
    if (!configuration.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   416
        QVERIFY(configuration.bearerName().isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   417
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   418
        switch (configuration.type())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   419
        {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   420
            case QNetworkConfiguration::ServiceNetwork:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   421
            case QNetworkConfiguration::UserChoice:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   422
            default:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   423
                QVERIFY(configuration.bearerName().isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   424
                break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   425
            case QNetworkConfiguration::InternetAccessPoint:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   426
                QVERIFY(validBearerNames.contains(configuration.bearerName()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   427
                break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   428
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   429
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   430
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   431
    // QNetworkSession::interface() should return an invalid interface unless
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   432
    // session is in the connected state.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   433
#if !(defined(Q_OS_SYMBIAN) && defined(__WINS__))
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   434
    // On Symbian emulator, the support for data bearers is limited
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   435
    QCOMPARE(session.state() == QNetworkSession::Connected, session.interface().isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   436
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   437
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   438
    if (!configuration.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   439
        QVERIFY(configuration.state() == QNetworkConfiguration::Undefined &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   440
                session.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   441
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   442
        switch (configuration.state()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   443
        case QNetworkConfiguration::Undefined:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   444
            QVERIFY(session.state() == QNetworkSession::NotAvailable);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   445
            break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   446
        case QNetworkConfiguration::Defined:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   447
            QVERIFY(session.state() == QNetworkSession::NotAvailable);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   448
            break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   449
        case QNetworkConfiguration::Discovered:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   450
            QVERIFY(session.state() == QNetworkSession::Connecting ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   451
                    session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   452
            break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   453
        case QNetworkConfiguration::Active:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   454
            QVERIFY(session.state() == QNetworkSession::Connected ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   455
                    session.state() == QNetworkSession::Closing ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   456
                    session.state() == QNetworkSession::Roaming);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   457
            break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   458
        default:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   459
            QFAIL("Invalid configuration state");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   460
        };
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   461
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   462
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   463
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   464
void tst_QNetworkSession::repeatedOpenClose_data() {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   465
    QTest::addColumn<QString>("bearerType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   466
    QTest::addColumn<QNetworkConfiguration::Type>("configurationType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   467
    QTest::addColumn<int>("repeatTimes");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   468
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   469
    QTest::newRow("WLAN_IAP") << "WLAN" << QNetworkConfiguration::InternetAccessPoint << 3;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   470
    // QTest::newRow("Cellular_IAP") << "cellular" << QNetworkConfiguration::InternetAccessPoint << 3;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   471
    // QTest::newRow("SNAP") << "bearer_type_not_relevant_with_SNAPs" << QNetworkConfiguration::ServiceNetwork << 3;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   472
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   473
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   474
// Tests repeated-open close.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   475
void tst_QNetworkSession::repeatedOpenClose() 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   476
{	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   477
    if (!testsToRun["repeatedOpenClose"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   478
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   479
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   480
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   481
    QFETCH(QString, bearerType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   482
    QFETCH(QNetworkConfiguration::Type, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   483
    QFETCH(int, repeatTimes);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   484
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   485
    // First check that opening once succeeds and determine if repeatable testing is doable
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   486
    QNetworkConfiguration config = suitableConfiguration(bearerType, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   487
    if (!config.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   488
        QSKIP("No suitable configurations, skipping this round of repeated open-close test.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   489
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   490
    qDebug() << "Using following configuratio to repeatedly open and close: " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   491
    QNetworkSession permanentSession(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   492
    if (!openSession(&permanentSession) || 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   493
        !closeSession(&permanentSession)) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   494
        QSKIP("Unable to open/close session, skipping this round of repeated open-close test.", SkipSingle); 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   495
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   496
    for (int i = 0; i < repeatTimes; i++) { 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   497
       qDebug() << "Opening, loop number " << i;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   498
       QVERIFY(openSession(&permanentSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   499
       qDebug() << "Closing, loop number, then waiting 5 seconds: " << i;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   500
       QVERIFY(closeSession(&permanentSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   501
       QTest::qWait(5000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   502
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   503
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   504
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   505
void tst_QNetworkSession::roamingErrorCodes() 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   506
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   507
    if (!testsToRun["roamingErrorCodes"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   508
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   509
    }    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   510
#ifndef Q_OS_SYMBIAN
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   511
    QSKIP("Roaming supported on Symbian.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   512
#else 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   513
    QNetworkConfiguration wlanIapConfig = suitableConfiguration("WLAN", QNetworkConfiguration::InternetAccessPoint);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   514
    if (!wlanIapConfig.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   515
        QSKIP("No WLAN IAP accessible, skipping test.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   516
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   517
    // Check that opening and closing two sessions on same config work gracefully:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   518
    QNetworkSession iapSession(wlanIapConfig);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   519
    QVERIFY(openSession(&iapSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   520
    QNetworkSession adminIapSession(wlanIapConfig);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   521
    QVERIFY(openSession(&adminIapSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   522
    QVERIFY(closeSession(&iapSession, false)); // false == not a last session based on the configuration
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   523
    QVERIFY(closeSession(&adminIapSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   524
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   525
    // Open configurations again, force close bearer and check that errors are emitted correctly
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   526
    // on the other session
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   527
    QVERIFY(openSession(&iapSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   528
    QVERIFY(openSession(&adminIapSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   529
    QSignalSpy errorSpy(&iapSession, SIGNAL(error(QNetworkSession::SessionError)));   
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   530
    adminIapSession.stop(); // requires NetworkControl capabilities
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   531
    QTRY_VERIFY(!errorSpy.isEmpty()); // wait for error signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   532
    QNetworkSession::SessionError error = qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   533
    QTest::qWait(2000); // Wait for a moment to all platform signals to propagate
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   534
    QVERIFY(error == QNetworkSession::SessionAbortedError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   535
    QVERIFY(iapSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   536
    QVERIFY(adminIapSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   537
#endif // Q_OS_SYMBIAN
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   538
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   539
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   540
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   541
void tst_QNetworkSession::sessionStop_data() {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   542
    QTest::addColumn<QString>("bearerType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   543
    QTest::addColumn<QNetworkConfiguration::Type>("configurationType");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   544
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   545
    QTest::newRow("SNAP") << "bearer_type_not_relevant_with_SNAPs" << QNetworkConfiguration::ServiceNetwork;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   546
    QTest::newRow("WLAN_IAP") << "WLAN" << QNetworkConfiguration::InternetAccessPoint;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   547
    QTest::newRow("Cellular_IAP") << "cellular" << QNetworkConfiguration::InternetAccessPoint;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   548
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   549
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   550
void tst_QNetworkSession::sessionStop() 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   551
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   552
    if (!testsToRun["sessionStop"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   553
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   554
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   555
#ifndef Q_OS_SYMBIAN
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   556
    QSKIP("Testcase contains mainly Symbian specific checks, because it is only platform to really support interface (IAP-level) Stop.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   557
#endif 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   558
    QFETCH(QString, bearerType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   559
    QFETCH(QNetworkConfiguration::Type, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   560
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   561
    int configWaitdelayInMs = 2000;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   562
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   563
    updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   564
    printConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   565
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   566
    QNetworkConfiguration config = suitableConfiguration(bearerType, configurationType);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   567
    if (!config.isValid()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   568
        QSKIP("No suitable configurations, skipping this round of session stop test.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   569
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   570
    qDebug() << "Using following configuration to open and stop a session: " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   571
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   572
    QNetworkSession openedSession(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   573
    QNetworkSession closedSession(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   574
    QNetworkSession innocentSession(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   575
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   576
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   577
    QSignalSpy closedSessionOpenedSpy(&closedSession, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   578
    QSignalSpy closedSessionClosedSpy(&closedSession, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   579
    QSignalSpy closedSessionStateChangedSpy(&closedSession, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   580
    QSignalSpy closedErrorSpy(&closedSession, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   581
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   582
    QSignalSpy openedSessionClosedSpy(&openedSession, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   583
    QSignalSpy openedSessionStateChangedSpy(&openedSession, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   584
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   585
    QSignalSpy innocentSessionClosedSpy(&innocentSession, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   586
    QSignalSpy innocentSessionStateChangedSpy(&innocentSession, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   587
    QSignalSpy innocentErrorSpy(&innocentSession, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   588
    QNetworkSession::SessionError sessionError;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   589
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   590
    // 1. Verify that stopping an opened session works (the simplest usecase).
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   591
    qDebug("----------1. Verify that stopping an opened session works (the simplest usecase)");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   592
    QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   593
    QVERIFY(openSession(&openedSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   594
    qDebug("Waiting for %d ms to get all configurationChange signals from platform.", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   595
    // Clear signals caused by opening
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   596
    closedSessionOpenedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   597
    closedSessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   598
    closedSessionStateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   599
    closedErrorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   600
    openedSessionStateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   601
    openedSessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   602
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   603
    openedSession.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   604
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   605
    qDebug("Waiting for %d ms to get all configurationChange signals from platform.", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   606
    QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   607
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   608
    // First to closing, then to disconnected
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   609
    QVERIFY(openedSessionStateChangedSpy.count() == 2);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   610
    QVERIFY(!openedSessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   611
    QVERIFY(openedSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   612
    QVERIFY(config.state() != QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   613
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   614
    // 2. Verify that stopping a session based on non-connected configuration does nothing
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   615
    qDebug("----------2. Verify that stopping a session based on non-connected configuration does nothing");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   616
    QNetworkSession::State closedSessionOriginalState = closedSession.state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   617
    // Clear all possible signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   618
    configChangeSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   619
    closedSessionOpenedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   620
    closedSessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   621
    closedSessionStateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   622
    closedErrorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   623
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   624
    closedSession.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   625
    qDebug("Waiting for %d ms to get all configurationChange signals from platform.", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   626
    QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   627
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   628
    QVERIFY(closedSessionOpenedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   629
    QVERIFY(closedSessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   630
    QVERIFY(closedSessionStateChangedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   631
    QVERIFY(closedErrorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   632
    QVERIFY(closedSession.state() == closedSessionOriginalState); // State remains
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   633
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   634
    // 3. Check that stopping a opened session affects also other opened session based on the same configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   635
    if (config.type() == QNetworkConfiguration::InternetAccessPoint) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   636
        qDebug("----------3. Check that stopping a opened session affects also other opened session based on the same configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   637
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   638
        QVERIFY(openSession(&openedSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   639
        QVERIFY(openSession(&innocentSession));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   640
	    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   641
        configChangeSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   642
        innocentSessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   643
        innocentSessionStateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   644
        innocentErrorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   645
        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   646
        openedSession.stop();    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   647
        qDebug("Waiting for %d ms to get all configurationChange signals from platform.", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   648
        QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   649
	QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   650
	    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   651
        QVERIFY(!innocentSessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   652
        QVERIFY(!innocentSessionStateChangedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   653
        QVERIFY(!innocentErrorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   654
        QVERIFY(innocentSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   655
        QVERIFY(openedSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   656
        sessionError = qvariant_cast<QNetworkSession::SessionError>(innocentErrorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   657
        QVERIFY(sessionError == QNetworkSession::SessionAbortedError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   658
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   659
        innocentSessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   660
        innocentSessionStateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   661
        innocentErrorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   662
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   663
        qDebug("----------3. Skip for SNAP configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   664
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   665
    // 4. Check that stopping a non-opened session stops the other session based on the 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   666
    // same configuration if configuration is IAP. Stopping closed SNAP session has no impact on other opened SNAP session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   667
    if (config.type() == QNetworkConfiguration::ServiceNetwork) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   668
        qDebug("----------4. Skip for SNAP configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   669
    } else if (config.type() == QNetworkConfiguration::InternetAccessPoint) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   670
        qDebug("----------4.   Check that stopping a non-opened session stops the other session based on the same configuration");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   671
	qDebug("----------4.1 Opening innocent session");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   672
        QVERIFY(openSession(&innocentSession));    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   673
        qDebug("Waiting for %d ms after open to make sure all platform indications are propagated", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   674
        QTest::qWait(configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   675
        qDebug("----------4.2 Calling closedSession.stop()");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   676
        closedSession.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   677
        qDebug("Waiting for %d ms to get all configurationChange signals from platform..", configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   678
        QTest::qWait(configWaitdelayInMs); // Wait to get all relevant configurationChange() signals
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   679
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   680
	    QTest::qWait(configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   681
	    QTest::qWait(configWaitdelayInMs);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   682
	    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   683
        QVERIFY(!innocentSessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   684
        QVERIFY(!innocentSessionStateChangedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   685
        QVERIFY(!innocentErrorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   686
        QVERIFY(innocentSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   687
        QVERIFY(closedSession.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   688
        sessionError = qvariant_cast<QNetworkSession::SessionError>(innocentErrorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   689
        QVERIFY(sessionError == QNetworkSession::SessionAbortedError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   690
        QVERIFY(config.state() == QNetworkConfiguration::Discovered);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   691
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   692
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   693
    // 5. Sanity check that stopping invalid session does not crash
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   694
    qDebug("----------5. Sanity check that stopping invalid session does not crash");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   695
    QNetworkSession invalidSession(QNetworkConfiguration(), 0);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   696
    QVERIFY(invalidSession.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   697
    invalidSession.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   698
    QVERIFY(invalidSession.state() == QNetworkSession::Invalid);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   699
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   700
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   701
void tst_QNetworkSession::userChoiceSession_data()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   702
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   703
    QTest::addColumn<QNetworkConfiguration>("configuration");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   704
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   705
    QNetworkConfiguration config = manager.defaultConfiguration();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   706
    if (config.type() == QNetworkConfiguration::UserChoice)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   707
        QTest::newRow("UserChoice") << config;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   708
    else
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   709
        QSKIP("Default configuration is not a UserChoice configuration.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   710
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   711
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   712
void tst_QNetworkSession::userChoiceSession()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   713
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   714
    if (!testsToRun["userChoiceSession"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   715
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   716
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   717
    QFETCH(QNetworkConfiguration, configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   718
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   719
    QVERIFY(configuration.type() == QNetworkConfiguration::UserChoice);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   720
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   721
    QNetworkSession session(configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   722
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   723
    // Check that configuration was really set
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   724
    QVERIFY(session.configuration() == configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   725
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   726
    QVERIFY(!session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   727
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   728
    // Check that session is not active
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   729
    QVERIFY(session.sessionProperty("ActiveConfiguration").toString().isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   730
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   731
    // The remaining tests require the session to be not NotAvailable.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   732
    if (session.state() == QNetworkSession::NotAvailable)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   733
        QSKIP("Network is not available.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   734
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   735
    QSignalSpy sessionOpenedSpy(&session, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   736
    QSignalSpy sessionClosedSpy(&session, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   737
    QSignalSpy stateChangedSpy(&session, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   738
    QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   739
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   740
    // Test opening the session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   741
    {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   742
        bool expectStateChange = session.state() != QNetworkSession::Connected;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   743
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   744
        session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   745
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   746
#if defined(Q_OS_SYMBIAN)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   747
        // Opening & closing multiple connections in a row sometimes
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   748
        // results hanging of connection opening on Symbian devices
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   749
        // => If first open fails, wait a moment and try again.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   750
        if (!session.waitForOpened()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   751
            qDebug("**** Session open Timeout - Wait 5 seconds and try once again ****");        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   752
            session.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   753
            QTest::qWait(5000); // Wait a while before trying to open session again
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   754
            session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   755
            session.waitForOpened();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   756
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   757
#else        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   758
        session.waitForOpened();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   759
#endif        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   760
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   761
        if (session.isOpen())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   762
            QVERIFY(!sessionOpenedSpy.isEmpty() || !errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   763
        if (!errorSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   764
            QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   765
                qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   766
            if (error == QNetworkSession::OperationNotSupportedError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   767
                // The session needed to bring up the interface,
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   768
                // but the operation is not supported.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   769
                QSKIP("Configuration does not support open().", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   770
            } else if (error == QNetworkSession::InvalidConfigurationError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   771
                // The session needed to bring up the interface, but it is not possible for the
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   772
                // specified configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   773
                if ((session.configuration().state() & QNetworkConfiguration::Discovered) ==
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   774
                    QNetworkConfiguration::Discovered) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   775
                    QFAIL("Failed to open session for Discovered configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   776
                } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   777
                    QSKIP("Cannot test session for non-Discovered configuration.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   778
                }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   779
            } else if (error == QNetworkSession::UnknownSessionError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   780
                    QSKIP("Unknown session error.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   781
            } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   782
                QFAIL("Error opening session.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   783
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   784
        } else if (!sessionOpenedSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   785
            QCOMPARE(sessionOpenedSpy.count(), 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   786
            QVERIFY(sessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   787
            QVERIFY(errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   788
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   789
            if (expectStateChange)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   790
                QTRY_VERIFY(!stateChangedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   791
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   792
            QVERIFY(session.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   793
#if !(defined(Q_OS_SYMBIAN) && defined(__WINS__))
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   794
            // On Symbian emulator, the support for data bearers is limited
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   795
            QVERIFY(session.interface().isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   796
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   797
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   798
            const QString userChoiceIdentifier =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   799
                session.sessionProperty("UserChoiceConfiguration").toString();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   800
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   801
            QVERIFY(!userChoiceIdentifier.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   802
            QVERIFY(userChoiceIdentifier != configuration.identifier());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   803
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   804
            QNetworkConfiguration userChoiceConfiguration =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   805
                manager.configurationFromIdentifier(userChoiceIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   806
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   807
            QVERIFY(userChoiceConfiguration.isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   808
            QVERIFY(userChoiceConfiguration.type() != QNetworkConfiguration::UserChoice);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   809
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   810
            const QString testIdentifier("abc");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   811
            //resetting UserChoiceConfiguration is ignored (read only property)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   812
            session.setSessionProperty("UserChoiceConfiguration", testIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   813
            QVERIFY(session.sessionProperty("UserChoiceConfiguration").toString() != testIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   814
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   815
            const QString activeIdentifier =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   816
                session.sessionProperty("ActiveConfiguration").toString();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   817
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   818
            QVERIFY(!activeIdentifier.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   819
            QVERIFY(activeIdentifier != configuration.identifier());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   820
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   821
            QNetworkConfiguration activeConfiguration =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   822
                manager.configurationFromIdentifier(activeIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   823
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   824
            QVERIFY(activeConfiguration.isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   825
            QVERIFY(activeConfiguration.type() == QNetworkConfiguration::InternetAccessPoint);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   826
            
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   827
            //resetting ActiveConfiguration is ignored (read only property)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   828
            session.setSessionProperty("ActiveConfiguration", testIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   829
            QVERIFY(session.sessionProperty("ActiveConfiguration").toString() != testIdentifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   830
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   831
            if (userChoiceConfiguration.type() == QNetworkConfiguration::InternetAccessPoint) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   832
                QVERIFY(userChoiceConfiguration == activeConfiguration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   833
            } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   834
                QVERIFY(userChoiceConfiguration.type() == QNetworkConfiguration::ServiceNetwork);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   835
                QVERIFY(userChoiceConfiguration.children().contains(activeConfiguration));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   836
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   837
        } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   838
            QFAIL("Timeout waiting for session to open.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   839
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   840
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   841
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   842
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   843
void tst_QNetworkSession::sessionOpenCloseStop_data()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   844
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   845
    QTest::addColumn<QNetworkConfiguration>("configuration");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   846
    QTest::addColumn<bool>("forceSessionStop");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   847
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   848
    foreach (const QNetworkConfiguration &config, manager.allConfigurations()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   849
        const QString name = config.name().isEmpty() ? QString("<Hidden>") : config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   850
        QTest::newRow((name + QLatin1String(" close")).toLocal8Bit().constData())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   851
            << config << false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   852
        QTest::newRow((name + QLatin1String(" stop")).toLocal8Bit().constData())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   853
            << config << true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   854
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   855
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   856
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   857
void tst_QNetworkSession::sessionOpenCloseStop()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   858
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   859
    if (!testsToRun["sessionOpenCloseStop"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   860
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   861
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   862
    QFETCH(QNetworkConfiguration, configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   863
    QFETCH(bool, forceSessionStop);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   864
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   865
    QNetworkSession session(configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   866
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   867
    // Test initial state of the session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   868
    {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   869
        QVERIFY(session.configuration() == configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   870
        QVERIFY(!session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   871
        // session may be invalid if configuration is removed between when
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   872
        // sessionOpenCloseStop_data() is called and here.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   873
        QVERIFY((configuration.isValid() && (session.state() != QNetworkSession::Invalid)) ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   874
                (!configuration.isValid() && (session.state() == QNetworkSession::Invalid)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   875
        QVERIFY(session.error() == QNetworkSession::UnknownSessionError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   876
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   877
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   878
    // The remaining tests require the session to be not NotAvailable.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   879
    if (session.state() == QNetworkSession::NotAvailable)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   880
        QSKIP("Network is not available.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   881
        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   882
    QSignalSpy sessionOpenedSpy(&session, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   883
    QSignalSpy sessionClosedSpy(&session, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   884
    QSignalSpy stateChangedSpy(&session, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   885
    QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   886
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   887
    // Test opening the session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   888
    {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   889
        QNetworkSession::State previousState = session.state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   890
        bool expectStateChange = previousState != QNetworkSession::Connected;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   891
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   892
        session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   893
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   894
#if defined(Q_OS_SYMBIAN)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   895
        // Opening & closing multiple connections in a row sometimes
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   896
        // results hanging of connection opening on Symbian devices
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   897
        // => If first open fails, wait a moment and try again.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   898
        if (!session.waitForOpened()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   899
            qDebug("**** Session open Timeout - Wait 5 seconds and try once again ****");        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   900
            session.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   901
            QTest::qWait(5000); // Wait a while before trying to open session again
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   902
            session.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   903
            session.waitForOpened();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   904
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   905
#else        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   906
        session.waitForOpened();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   907
#endif        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   908
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   909
         // Wait until the configuration is uptodate as well, it may be signaled 'connected' 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   910
         // bit later than the session
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   911
         QTRY_VERIFY(configuration.state() == QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   912
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   913
        if (session.isOpen())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   914
            QVERIFY(!sessionOpenedSpy.isEmpty() || !errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   915
        if (!errorSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   916
        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   917
            QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   918
                qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   919
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   920
            QVERIFY(session.state() == previousState);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   921
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   922
            if (error == QNetworkSession::OperationNotSupportedError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   923
                // The session needed to bring up the interface,
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   924
                // but the operation is not supported.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   925
                QSKIP("Configuration does not support open().", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   926
            } else if (error == QNetworkSession::InvalidConfigurationError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   927
                // The session needed to bring up the interface, but it is not possible for the
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   928
                // specified configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   929
                if ((session.configuration().state() & QNetworkConfiguration::Discovered) ==
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   930
                    QNetworkConfiguration::Discovered) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   931
                    QFAIL("Failed to open session for Discovered configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   932
                } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   933
                    QSKIP("Cannot test session for non-Discovered configuration.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   934
                }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   935
            } else if (error == QNetworkSession::UnknownSessionError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   936
                    QSKIP("Unknown Session error.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   937
            } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   938
                QFAIL("Error opening session.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   939
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   940
        } else if (!sessionOpenedSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   941
            QCOMPARE(sessionOpenedSpy.count(), 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   942
            QVERIFY(sessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   943
            QVERIFY(errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   944
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   945
            if (expectStateChange) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   946
                QTRY_VERIFY(stateChangedSpy.count() >= 2);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   947
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   948
                QNetworkSession::State state =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   949
                    qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(0).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   950
                QVERIFY(state == QNetworkSession::Connecting);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   951
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   952
                state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(1).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   953
                QVERIFY(state == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   954
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   955
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   956
            QVERIFY(session.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   957
#if !(defined(Q_OS_SYMBIAN) && defined(__WINS__))
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   958
            // On Symbian emulator, the support for data bearers is limited
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   959
            QVERIFY(session.interface().isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   960
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   961
        } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   962
            QFAIL("Timeout waiting for session to open.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   963
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   964
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   965
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   966
    sessionOpenedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   967
    sessionClosedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   968
    stateChangedSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   969
    errorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   970
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   971
    QNetworkSession session2(configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   972
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   973
    QSignalSpy sessionOpenedSpy2(&session2, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   974
    QSignalSpy sessionClosedSpy2(&session2, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   975
    QSignalSpy stateChangedSpy2(&session2, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   976
    QSignalSpy errorSpy2(&session2, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   977
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   978
    // Test opening a second session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   979
    {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   980
        QVERIFY(session2.configuration() == configuration);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   981
        QVERIFY(!session2.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   982
        QVERIFY(session2.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   983
        QVERIFY(session.error() == QNetworkSession::UnknownSessionError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   984
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   985
        session2.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   986
	    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   987
        QTRY_VERIFY(!sessionOpenedSpy2.isEmpty() || !errorSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   988
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   989
        if (errorSpy2.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   990
            QVERIFY(session2.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   991
            QVERIFY(session2.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   992
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   993
        QVERIFY(session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   994
        QVERIFY(session.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   995
#if !(defined(Q_OS_SYMBIAN) && defined(__WINS__))
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   996
        // On Symbian emulator, the support for data bearers is limited
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   997
        QVERIFY(session.interface().isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   998
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   999
        if (errorSpy2.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1000
            QCOMPARE(session.interface().hardwareAddress(), session2.interface().hardwareAddress());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1001
            QCOMPARE(session.interface().index(), session2.interface().index());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1002
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1003
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1004
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1005
    sessionOpenedSpy2.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1006
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1007
    if (forceSessionStop && session2.isOpen()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1008
        // Test forcing the second session to stop the interface.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1009
        QNetworkSession::State previousState = session.state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1010
#ifdef Q_CC_NOKIAX86
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1011
        // For S60 emulator builds: RConnection::Stop does not work on all Emulators
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1012
        bool expectStateChange = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1013
#else
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1014
        bool expectStateChange = previousState != QNetworkSession::Disconnected;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1015
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1016
        session2.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1017
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1018
        // QNetworkSession::stop() must result either closed() signal
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1019
        // or error() signal
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1020
        QTRY_VERIFY(!sessionClosedSpy2.isEmpty() || !errorSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1021
        QVERIFY(!session2.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1022
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1023
        if (!errorSpy2.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1024
            // QNetworkSession::stop() resulted error() signal for session2
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1025
            // => also session should emit error() signal
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1026
            QTRY_VERIFY(!errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1027
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1028
            // check for SessionAbortedError
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1029
            QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1030
                qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1031
            QNetworkSession::SessionError error2 =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1032
                qvariant_cast<QNetworkSession::SessionError>(errorSpy2.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1033
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1034
            QVERIFY(error == QNetworkSession::SessionAbortedError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1035
            QVERIFY(error2 == QNetworkSession::SessionAbortedError);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1036
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1037
            QCOMPARE(errorSpy.count(), 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1038
            QCOMPARE(errorSpy2.count(), 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1039
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1040
            errorSpy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1041
            errorSpy2.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1042
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1043
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1044
        QVERIFY(errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1045
        QVERIFY(errorSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1046
        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1047
        // Wait for Disconnected state 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1048
        QTRY_NOOP(session2.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1049
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1050
        if (expectStateChange)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1051
            QTRY_VERIFY(stateChangedSpy2.count() >= 1 || !errorSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1052
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1053
        if (!errorSpy2.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1054
            QVERIFY(session2.state() == previousState);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1055
            QVERIFY(session.state() == previousState);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1056
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1057
            QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1058
                qvariant_cast<QNetworkSession::SessionError>(errorSpy2.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1059
            if (error == QNetworkSession::OperationNotSupportedError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1060
                // The session needed to bring down the interface,
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1061
                // but the operation is not supported.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1062
                QSKIP("Configuration does not support stop().", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1063
            } else if (error == QNetworkSession::InvalidConfigurationError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1064
                // The session needed to bring down the interface, but it is not possible for the
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1065
                // specified configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1066
                if ((session.configuration().state() & QNetworkConfiguration::Discovered) ==
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1067
                    QNetworkConfiguration::Discovered) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1068
                    QFAIL("Failed to stop session for Discovered configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1069
                } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1070
                    QSKIP("Cannot test session for non-Discovered configuration.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1071
                }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1072
            } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1073
                QFAIL("Error stopping session.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1074
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1075
        } else if (!sessionClosedSpy2.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1076
            if (expectStateChange) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1077
                if (configuration.type() == QNetworkConfiguration::ServiceNetwork) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1078
                    bool roamedSuccessfully = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1079
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1080
                    QNetworkSession::State state;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1081
                    if (stateChangedSpy2.count() == 4) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1082
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1083
                        QVERIFY(state == QNetworkSession::Connecting);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1084
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1085
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1086
                        QVERIFY(state == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1087
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1088
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(2).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1089
                        QVERIFY(state == QNetworkSession::Closing);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1090
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1091
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(3).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1092
                        QVERIFY(state == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1093
                    } else if (stateChangedSpy2.count() == 2) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1094
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1095
                        QVERIFY(state == QNetworkSession::Closing);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1096
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1097
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1098
                        QVERIFY(state == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1099
                    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1100
                        QFAIL("Unexpected amount of state changes when roaming.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1101
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1102
			
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1103
                    QTRY_VERIFY(session.state() == QNetworkSession::Roaming ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1104
                                session.state() == QNetworkSession::Connected ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1105
                                session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1106
                    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1107
                    QTRY_VERIFY(stateChangedSpy.count() > 0);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1108
                    state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 1).at(0));                    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1109
                    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1110
                    for (int i = 0; i < stateChangedSpy.count(); i++) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1111
                        QNetworkSession::State state_temp =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1112
                                qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(i).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1113
                        // Extra debug because a fragile point in testcase because statuses vary.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1114
                        qDebug() << "------- Statechange spy at: " << i << " is " << state_temp;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1115
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1116
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1117
                    if (state == QNetworkSession::Roaming) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1118
                        QTRY_VERIFY(session.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1119
                        QTRY_VERIFY(session2.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1120
                        roamedSuccessfully = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1121
                    } else if (state == QNetworkSession::Closing) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1122
                        QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1123
                        QTRY_VERIFY(session.state() == QNetworkSession::Connected || 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1124
                        	session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1125
                        roamedSuccessfully = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1126
                    } else if (state == QNetworkSession::Disconnected) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1127
                        QTRY_VERIFY(!errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1128
                        QTRY_VERIFY(session2.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1129
                  	} else if (state == QNetworkSession::Connected) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1130
                        QTRY_VERIFY(errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1131
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1132
                        if (stateChangedSpy.count() > 1) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1133
                            state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 2).at(0));                        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1134
                            QVERIFY(state == QNetworkSession::Roaming);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1135
                        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1136
                        roamedSuccessfully = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1137
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1138
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1139
                    if (roamedSuccessfully) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1140
                        // Verify that you can open session based on the disconnected configuration
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1141
                        QString configId = session.sessionProperty("ActiveConfiguration").toString();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1142
                        QNetworkConfiguration config = manager.configurationFromIdentifier(configId);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1143
                        QNetworkSession session3(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1144
                        QSignalSpy errorSpy3(&session3, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1145
                        QSignalSpy sessionOpenedSpy3(&session3, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1146
                        session3.open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1147
                        session3.waitForOpened();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1148
                        QTest::qWait(1000); // Wait awhile to get all signals from platform
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1149
                        if (session.isOpen())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1150
                            QVERIFY(!sessionOpenedSpy3.isEmpty() || !errorSpy3.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1151
                        session.stop();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1152
                        QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1153
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1154
#ifndef Q_CC_NOKIAX86
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1155
                    if (!roamedSuccessfully)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1156
                        QVERIFY(!errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1157
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1158
                } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1159
                    QTest::qWait(2000); // Wait awhile to get all signals from platform
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1160
        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1161
                    if (stateChangedSpy2.count() == 2)  {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1162
                        QNetworkSession::State state =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1163
                            qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1164
                        QVERIFY(state == QNetworkSession::Closing);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1165
                        state = qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(1).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1166
                        QVERIFY(state == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1167
                    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1168
                        QVERIFY(stateChangedSpy2.count() >= 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1169
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1170
                        for (int i = 0; i < stateChangedSpy2.count(); i++) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1171
                            QNetworkSession::State state_temp =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1172
                                    qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(i).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1173
                            // Extra debug because a fragile point in testcase.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1174
                            qDebug() << "+++++ Statechange spy at: " << i << " is " << state_temp;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1175
                        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1176
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1177
                        QNetworkSession::State state =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1178
                                qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(stateChangedSpy2.count() - 1).at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1179
                         // Symbian version dependant.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1180
                        QVERIFY(state == QNetworkSession::Disconnected);	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1181
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1182
                }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1183
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1184
                QTRY_VERIFY(!sessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1185
                QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1186
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1187
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1188
            QVERIFY(errorSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1189
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1190
            ++inProcessSessionManagementCount;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1191
        } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1192
            QFAIL("Timeout waiting for session to stop.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1193
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1194
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1195
#ifndef Q_CC_NOKIAX86
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1196
        QVERIFY(!sessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1197
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1198
        QVERIFY(!sessionClosedSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1199
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1200
#ifndef Q_CC_NOKIAX86
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1201
        QVERIFY(!session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1202
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1203
        QVERIFY(!session2.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1204
    } else if (session2.isOpen()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1205
        // Test closing the second session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1206
        {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1207
            int stateChangedCountBeforeClose = stateChangedSpy2.count();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1208
            session2.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1209
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1210
            QTRY_VERIFY(!sessionClosedSpy2.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1211
#ifndef Q_CC_NOKIAX86        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1212
            QVERIFY(stateChangedSpy2.count() == stateChangedCountBeforeClose);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1213
#endif        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1214
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1215
            QVERIFY(sessionClosedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1216
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1217
            QVERIFY(session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1218
            QVERIFY(!session2.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1219
            QVERIFY(session.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1220
            QVERIFY(session2.state() == QNetworkSession::Connected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1221
#if !(defined(Q_OS_SYMBIAN) && defined(__WINS__))
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1222
            // On Symbian emulator, the support for data bearers is limited
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1223
            QVERIFY(session.interface().isValid());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1224
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1225
            QCOMPARE(session.interface().hardwareAddress(), session2.interface().hardwareAddress());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1226
            QCOMPARE(session.interface().index(), session2.interface().index());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1227
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1228
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1229
        sessionClosedSpy2.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1230
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1231
        // Test closing the first session.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1232
        {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1233
#ifdef Q_CC_NOKIAX86
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1234
            // For S60 emulator builds: RConnection::Close does not actually
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1235
            //                          close network connection on all Emulators
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1236
            bool expectStateChange = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1237
#else
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1238
            bool expectStateChange = session.state() != QNetworkSession::Disconnected &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1239
                                     manager.capabilities() & QNetworkConfigurationManager::SystemSessionSupport;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1240
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1241
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1242
            session.close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1243
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1244
            QTRY_VERIFY(!sessionClosedSpy.isEmpty() || !errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1245
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1246
            QVERIFY(!session.isOpen());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1247
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1248
            if (expectStateChange)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1249
                QTRY_VERIFY(!stateChangedSpy.isEmpty() || !errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1250
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1251
            if (!errorSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1252
                QNetworkSession::SessionError error =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1253
                    qvariant_cast<QNetworkSession::SessionError>(errorSpy.first().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1254
                if (error == QNetworkSession::OperationNotSupportedError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1255
                    // The session needed to bring down the interface,
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1256
                    // but the operation is not supported.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1257
                    QSKIP("Configuration does not support close().", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1258
                } else if (error == QNetworkSession::InvalidConfigurationError) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1259
                    // The session needed to bring down the interface, but it is not possible for the
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1260
                    // specified configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1261
                    if ((session.configuration().state() & QNetworkConfiguration::Discovered) ==
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1262
                        QNetworkConfiguration::Discovered) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1263
                        QFAIL("Failed to close session for Discovered configuration.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1264
                    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1265
                        QSKIP("Cannot test session for non-Discovered configuration.", SkipSingle);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1266
                    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1267
                } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1268
                    QFAIL("Error closing session.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1269
                }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1270
            } else if (!sessionClosedSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1271
                QVERIFY(sessionOpenedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1272
                QCOMPARE(sessionClosedSpy.count(), 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1273
                if (expectStateChange)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1274
                    QVERIFY(!stateChangedSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1275
                QVERIFY(errorSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1276
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1277
                if (expectStateChange)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1278
                    QTRY_VERIFY(session.state() == QNetworkSession::Disconnected);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1279
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1280
                ++inProcessSessionManagementCount;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1281
            } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1282
                QFAIL("Timeout waiting for session to close.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1283
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1284
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1285
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1286
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1287
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1288
QDebug operator<<(QDebug debug, const QList<QNetworkConfiguration> &list)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1289
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1290
    debug.nospace() << "( ";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1291
    foreach (const QNetworkConfiguration &config, list)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1292
        debug.nospace() << config.identifier() << ", ";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1293
    debug.nospace() << ")\n";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1294
    return debug;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1295
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1296
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1297
// Note: outOfProcessSession requires that at least one configuration is
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1298
// at Discovered -state.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1299
void tst_QNetworkSession::outOfProcessSession()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1300
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1301
    if (!testsToRun["outOfProcessSession"]) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1302
	QSKIP("Temporary skip due to value set false (or it is missing) in testsToRun map", SkipAll);    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1303
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1304
#if defined(Q_OS_SYMBIAN) && defined(__WINS__)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1305
    QSKIP("Symbian emulator does not support two [QR]PRocesses linking a dll (QtBearer.dll) with global writeable static data.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1306
#endif
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1307
	updateConfigurations();	   
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1308
	QTest::qWait(2000);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1309
	
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1310
    QNetworkConfigurationManager manager;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1311
    // Create a QNetworkConfigurationManager to detect configuration changes made in Lackey. This
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1312
    // is actually the essence of this testcase - to check that platform mediates/reflects changes
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1313
    // regardless of process boundaries. The interprocess communication is more like a way to get
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1314
    // this test-case act correctly and timely.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1315
    QList<QNetworkConfiguration> before = manager.allConfigurations(QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1316
    QSignalSpy spy(&manager, SIGNAL(configurationChanged(QNetworkConfiguration)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1317
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1318
    // Cannot read/write to processes on WinCE or Symbian.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1319
    // Easiest alternative is to use sockets for IPC.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1320
    QLocalServer oopServer;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1321
    // First remove possible earlier listening address which would cause listen to fail 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1322
    // (e.g. previously abruptly ended unit test might cause this)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1323
    QLocalServer::removeServer("tst_qnetworksession");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1324
    oopServer.listen("tst_qnetworksession");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1325
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1326
    QProcess lackey;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1327
    lackey.start("qnetworksessionlackey");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1328
    QVERIFY(lackey.waitForStarted());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1329
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1330
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1331
    QVERIFY(oopServer.waitForNewConnection(-1));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1332
    QLocalSocket *oopSocket = oopServer.nextPendingConnection();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1333
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1334
    do {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1335
        QByteArray output;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1336
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1337
        if(oopSocket->waitForReadyRead()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1338
            output = oopSocket->readLine().trimmed();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1339
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1340
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1341
        if (output.startsWith("Started session ")) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1342
            QString identifier = QString::fromLocal8Bit(output.mid(20).constData());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1343
            QNetworkConfiguration changed;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1344
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1345
            do {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1346
                QTRY_VERIFY(!spy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1347
                changed = qvariant_cast<QNetworkConfiguration>(spy.takeFirst().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1348
            } while (changed.identifier() != identifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1349
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1350
            QVERIFY((changed.state() & QNetworkConfiguration::Active) ==
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1351
                    QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1352
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1353
            QVERIFY(!before.contains(changed));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1354
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1355
            QList<QNetworkConfiguration> after =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1356
                manager.allConfigurations(QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1357
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1358
            QVERIFY(after.contains(changed));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1359
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1360
            spy.clear();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1361
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1362
            oopSocket->write("stop\n");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1363
            oopSocket->waitForBytesWritten();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1364
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1365
            do {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1366
                QTRY_VERIFY(!spy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1367
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1368
                changed = qvariant_cast<QNetworkConfiguration>(spy.takeFirst().at(0));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1369
            } while (changed.identifier() != identifier);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1370
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1371
            QVERIFY((changed.state() & QNetworkConfiguration::Active) !=
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1372
                    QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1373
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1374
            QList<QNetworkConfiguration> afterStop =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1375
                    manager.allConfigurations(QNetworkConfiguration::Active);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1376
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1377
            QVERIFY(!afterStop.contains(changed));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1378
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1379
            oopSocket->disconnectFromServer();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1380
            oopSocket->waitForDisconnected(-1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1381
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1382
            lackey.waitForFinished();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1383
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1384
    // This is effected by QTBUG-4903, process will always report as running
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1385
    //} while (lackey.state() == QProcess::Running);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1386
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1387
    // Workaround: the socket in the lackey will disconnect on exit
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1388
    } while (oopSocket->state() == QLocalSocket::ConnectedState);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1389
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1390
    switch (lackey.exitCode()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1391
    case 0:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1392
        qDebug("Lackey returned exit success (0)");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1393
        break;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1394
    case 1:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1395
        QSKIP("No discovered configurations found.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1396
    case 2:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1397
        QSKIP("Lackey could not start session.", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1398
    default:
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1399
        QSKIP("Lackey failed", SkipAll);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1400
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1401
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1402
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1403
// A convinience / helper function for testcases. Return the first matching configuration.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1404
// Ignores configurations in other than 'discovered' -state. Returns invalid (QNetworkConfiguration())
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1405
// if none found.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1406
QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfiguration::Type configType) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1407
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1408
    // Refresh configurations and derive configurations matching given parameters.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1409
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1410
    QSignalSpy updateSpy(&mgr, SIGNAL(updateCompleted()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1411
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1412
    mgr.updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1413
    QTRY_NOOP(updateSpy.count() == 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1414
    if (updateSpy.count() != 1) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1415
        qDebug("tst_QNetworkSession::suitableConfiguration() failure: unable to update configurations");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1416
        return QNetworkConfiguration();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1417
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1418
    QList<QNetworkConfiguration> discoveredConfigs = mgr.allConfigurations(QNetworkConfiguration::Discovered);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1419
    foreach(QNetworkConfiguration config, discoveredConfigs) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1420
        if ((config.state() & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) {        
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1421
            discoveredConfigs.removeOne(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1422
        } else if (config.type() != configType) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1423
            // qDebug() << "Dumping config because type (IAP/SNAP) mismatches: " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1424
            discoveredConfigs.removeOne(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1425
        } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1426
                    bearerType == "cellular") { // 'cellular' bearertype is for convinience
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1427
            if (config.bearerName() != "2G" &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1428
                config.bearerName() != "CDMA2000" &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1429
                config.bearerName() != "WCDMA" &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1430
                config.bearerName() != "HSPA") {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1431
                // qDebug() << "Dumping config because bearer mismatches (cellular): " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1432
                discoveredConfigs.removeOne(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1433
            }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1434
        } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) && 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1435
                    bearerType != config.bearerName()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1436
            // qDebug() << "Dumping config because bearer mismatches (WLAN): " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1437
            discoveredConfigs.removeOne(config);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1438
        }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1439
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1440
    if (discoveredConfigs.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1441
        qDebug("tst_QNetworkSession::suitableConfiguration() failure: no suitable configurations present.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1442
        return QNetworkConfiguration();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1443
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1444
        return discoveredConfigs.first();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1445
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1446
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1447
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1448
// A convinience-function: updates configurations and waits that they are updated.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1449
void updateConfigurations() 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1450
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1451
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1452
    QSignalSpy updateSpy(&mgr, SIGNAL(updateCompleted()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1453
    mgr.updateConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1454
    QTRY_NOOP(updateSpy.count() == 1);
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1455
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1456
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1457
// A convinience-function: updates and prints all available confiurations and their states
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1458
void printConfigurations()
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1459
{
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1460
    QNetworkConfigurationManager manager;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1461
    QList<QNetworkConfiguration> allConfigs =
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1462
    manager.allConfigurations();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1463
    qDebug("tst_QNetworkSession::printConfigurations QNetworkConfigurationManager gives following configurations: ");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1464
    foreach(QNetworkConfiguration config, allConfigs) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1465
        qDebug() << "Name of the configuration: " << config.name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1466
        qDebug() << "State of the configuration: " << config.state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1467
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1468
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1469
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1470
// A convinience function for test-cases: opens the given configuration and return
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1471
// true if it was done gracefully.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1472
bool openSession(QNetworkSession *session) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1473
    bool result = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1474
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1475
    QSignalSpy openedSpy(session, SIGNAL(opened()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1476
    QSignalSpy stateChangeSpy(session, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1477
    QSignalSpy errorSpy(session, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1478
    QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1479
    // Store some initial statuses, because expected signals differ if the config is already
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1480
    // active by some other session
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1481
    QNetworkConfiguration::StateFlags configInitState = session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1482
    QNetworkSession::State sessionInitState = session->state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1483
    qDebug() << "tst_QNetworkSession::openSession() name of the configuration to be opened:  " << session->configuration().name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1484
    qDebug() << "tst_QNetworkSession::openSession() state of the configuration to be opened:  " << session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1485
    qDebug() << "tst_QNetworkSession::openSession() state of the session to be opened:  " << session->state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1486
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1487
    if (session->isOpen() ||
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1488
        !session->sessionProperty("ActiveConfiguration").toString().isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1489
        qDebug("tst_QNetworkSession::openSession() failure: session was already open / active.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1490
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1491
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1492
        session->open();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1493
        session->waitForOpened(120000); // Bringing interfaces up and down may take time at platform
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1494
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1495
    QTest::qWait(5000); // Wait a moment to ensure all signals are propagated
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1496
    // Check that connection opening went by the book. Add checks here if more strictness needed.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1497
    if (!session->isOpen()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1498
        qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::open() failed.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1499
        result =  false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1500
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1501
    if (openedSpy.count() != 1) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1502
        qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::opened() - signal not received.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1503
        result =  false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1504
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1505
    if (!errorSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1506
        qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::error() - signal was detected.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1507
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1508
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1509
    if (sessionInitState != QNetworkSession::Connected && 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1510
        stateChangeSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1511
        qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::stateChanged() - signals not detected.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1512
        result =  false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1513
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1514
    if (configInitState != QNetworkConfiguration::Active && 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1515
        configChangeSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1516
        qDebug("tst_QNetworkSession::openSession() failure: QNetworkConfigurationManager::configurationChanged() - signals not detected.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1517
        result =  false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1518
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1519
    if (session->configuration().state() != QNetworkConfiguration::Active) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1520
        qDebug("tst_QNetworkSession::openSession() failure: session's configuration is not in 'Active' -state.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1521
	qDebug() << "tst_QNetworkSession::openSession() state is:  " << session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1522
        result =  false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1523
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1524
    if (result == false) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1525
	    qDebug() << "tst_QNetworkSession::openSession() opening session failed.";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1526
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1527
	    qDebug() << "tst_QNetworkSession::openSession() opening session succeeded.";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1528
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1529
    qDebug() << "tst_QNetworkSession::openSession() name of the configuration is:  " << session->configuration().name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1530
    qDebug() << "tst_QNetworkSession::openSession() configuration state is:  " << session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1531
    qDebug() << "tst_QNetworkSession::openSession() session state is:  " << session->state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1532
	    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1533
    return result;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1534
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1535
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1536
// Helper function for closing opened session. Performs checks that 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1537
// session is closed gradefully (e.g. signals). Function does not delete
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1538
// the session. The lastSessionOnConfiguration (true by default) is used to
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1539
// tell if there are more sessions open, basing on same configration. This 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1540
// impacts the checks made.
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1541
bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1542
    if (!session) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1543
        qDebug("tst_QNetworkSession::closeSession() failure: NULL session given");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1544
        return false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1545
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1546
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1547
    qDebug() << "tst_QNetworkSession::closeSession() name of the configuration to be closed:  " << session->configuration().name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1548
    qDebug() << "tst_QNetworkSession::closeSession() state of the configuration to be closed:  " << session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1549
    qDebug() << "tst_QNetworkSession::closeSession() state of the session to be closed:  " << session->state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1550
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1551
    if (session->state() != QNetworkSession::Connected || 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1552
        !session->isOpen()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1553
        qDebug("tst_QNetworkSession::closeSession() failure: session is not opened.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1554
        return false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1555
    }    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1556
    QNetworkConfigurationManager mgr;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1557
    QSignalSpy sessionClosedSpy(session, SIGNAL(closed()));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1558
    QSignalSpy sessionStateChangedSpy(session, SIGNAL(stateChanged(QNetworkSession::State)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1559
    QSignalSpy sessionErrorSpy(session, SIGNAL(error(QNetworkSession::SessionError)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1560
    QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration)));
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1561
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1562
    bool result = true;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1563
    session->close();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1564
    QTest::qWait(5000); // Wait a moment so that all signals are propagated
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1565
    
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1566
    if (!sessionErrorSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1567
        qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::error() received.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1568
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1569
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1570
    if (sessionClosedSpy.count() != 1) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1571
        qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::closed() signal not received.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1572
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1573
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1574
    if (lastSessionOnConfiguration && 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1575
        sessionStateChangedSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1576
        qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::stateChanged() signals not received.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1577
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1578
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1579
    if (lastSessionOnConfiguration &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1580
        session->state() != QNetworkSession::Disconnected) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1581
        qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession is not in Disconnected -state");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1582
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1583
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1584
    QTRY_NOOP(!configChangeSpy.isEmpty());
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1585
    if (lastSessionOnConfiguration &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1586
        configChangeSpy.isEmpty()) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1587
        qDebug("tst_QNetworkSession::closeSession() failure: QNetworkConfigurationManager::configurationChanged() - signal not detected.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1588
        result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1589
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1590
    if (lastSessionOnConfiguration &&
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1591
        session->configuration().state() == QNetworkConfiguration::Active) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1592
         qDebug("tst_QNetworkSession::closeSession() failure: session's configuration is still in active state.");
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1593
         result = false;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1594
    }
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1595
    if (result == false) {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1596
	    qDebug() << "tst_QNetworkSession::closeSession() closing session failed.";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1597
    } else {
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1598
	    qDebug() << "tst_QNetworkSession::closeSession() closing session succeeded.";
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1599
    } 
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1600
    qDebug() << "tst_QNetworkSession::closeSession() name of the configuration is:  " << session->configuration().name();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1601
    qDebug() << "tst_QNetworkSession::closeSession() configuration state is:  " << session->configuration().state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1602
    qDebug() << "tst_QNetworkSession::closeSession() session state is:  " << session->state();
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1603
    return result;
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1604
}
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1605
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1606
QTEST_MAIN(tst_QNetworkSession)
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1607
cd2778e5acfe Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
  1608
#include "tst_qnetworksession.moc"