tests/auto/qtcpsocket/tst_qtcpsocket.cpp
branchRCL_3
changeset 4 3b1da2848fc7
parent 3 41300fa6a67c
child 8 3f74d0d4af4c
equal deleted inserted replaced
3:41300fa6a67c 4:3b1da2848fc7
     1 /****************************************************************************
     1 /****************************************************************************
     2 **
     2 **
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     4 ** All rights reserved.
     4 ** All rights reserved.
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     6 **
     6 **
     7 ** This file is part of the test suite of the Qt Toolkit.
     7 ** This file is part of the test suite of the Qt Toolkit.
     8 **
     8 **
    80 #include <QTextStream>
    80 #include <QTextStream>
    81 #include <QThread>
    81 #include <QThread>
    82 #include <QTime>
    82 #include <QTime>
    83 #include <QTimer>
    83 #include <QTimer>
    84 #include <QDebug>
    84 #include <QDebug>
    85 #ifndef TEST_QNETWORK_PROXY
       
    86 #define TEST_QNETWORK_PROXY
       
    87 #endif
       
    88 // RVCT compiles also unused inline methods
    85 // RVCT compiles also unused inline methods
    89 # include <QNetworkProxy>
    86 # include <QNetworkProxy>
    90 
    87 
    91 #ifdef Q_OS_LINUX
    88 #ifdef Q_OS_LINUX
    92 #include <stdio.h>
    89 #include <stdio.h>
   192     void connectToMultiIP();
   189     void connectToMultiIP();
   193     void moveToThread0();
   190     void moveToThread0();
   194     void increaseReadBufferSize();
   191     void increaseReadBufferSize();
   195     void taskQtBug5799ConnectionErrorWaitForConnected();
   192     void taskQtBug5799ConnectionErrorWaitForConnected();
   196     void taskQtBug5799ConnectionErrorEventLoop();
   193     void taskQtBug5799ConnectionErrorEventLoop();
   197 #ifdef TEST_QNETWORK_PROXY
   194 
   198     void invalidProxy_data();
   195     void invalidProxy_data();
   199     void invalidProxy();
   196     void invalidProxy();
   200     void proxyFactory_data();
   197     void proxyFactory_data();
   201     void proxyFactory();
   198     void proxyFactory();
   202 #endif
       
   203 
   199 
   204 protected slots:
   200 protected slots:
   205     void nonBlockingIMAP_hostFound();
   201     void nonBlockingIMAP_hostFound();
   206     void nonBlockingIMAP_connected();
   202     void nonBlockingIMAP_connected();
   207     void nonBlockingIMAP_closed();
   203     void nonBlockingIMAP_closed();
   268     QTest::addColumn<int>("proxyType");
   264     QTest::addColumn<int>("proxyType");
   269     QTest::addColumn<bool>("ssl");
   265     QTest::addColumn<bool>("ssl");
   270 
   266 
   271     qDebug() << QtNetworkSettings::serverName();
   267     qDebug() << QtNetworkSettings::serverName();
   272     QTest::newRow("WithoutProxy") << false << 0 << false;
   268     QTest::newRow("WithoutProxy") << false << 0 << false;
   273 #ifdef TEST_QNETWORK_PROXY
       
   274     QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false;
   269     QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false;
   275     QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false;
   270     QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false;
   276 
   271 
   277     QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false;
   272     QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false;
   278     QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false;
   273     QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false;
   279 //    QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm) << false;
   274 //    QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm) << false;
   280 #endif
   275 
   281 #ifndef QT_NO_OPENSSL
   276 #ifndef QT_NO_OPENSSL
   282     QTest::newRow("WithoutProxy SSL") << false << 0 << true;
   277     QTest::newRow("WithoutProxy SSL") << false << 0 << true;
   283 #ifdef TEST_QNETWORK_PROXY
       
   284     QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true;
   278     QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true;
   285     QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true;
   279     QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true;
   286 
   280 
   287     QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true;
   281     QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true;
   288     QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true;
   282     QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true;
   289 //    QTest::newRow("WithHttpProxyNtlmAuth SSL") << true << int(HttpProxy | AuthNtlm) << true;
   283 //    QTest::newRow("WithHttpProxyNtlmAuth SSL") << true << int(HttpProxy | AuthNtlm) << true;
   290 #endif
   284 #endif
   291 #endif
       
   292 }
   285 }
   293 
   286 
   294 void tst_QTcpSocket::init()
   287 void tst_QTcpSocket::init()
   295 {
   288 {
   296     QFETCH_GLOBAL(bool, setProxy);
   289     QFETCH_GLOBAL(bool, setProxy);
   297     if (setProxy) {
   290     if (setProxy) {
   298 #ifdef TEST_QNETWORK_PROXY
       
   299         QFETCH_GLOBAL(int, proxyType);
   291         QFETCH_GLOBAL(int, proxyType);
   300         QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
   292         QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
   301         QNetworkProxy proxy;
   293         QNetworkProxy proxy;
   302 
   294 
   303         switch (proxyType) {
   295         switch (proxyType) {
   320         case HttpProxy | AuthNtlm:
   312         case HttpProxy | AuthNtlm:
   321             proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
   313             proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
   322             break;
   314             break;
   323         }
   315         }
   324         QNetworkProxy::setApplicationProxy(proxy);
   316         QNetworkProxy::setApplicationProxy(proxy);
   325 #endif
       
   326     }
   317     }
   327 }
   318 }
   328 
   319 
   329 QTcpSocket *tst_QTcpSocket::newSocket() const
   320 QTcpSocket *tst_QTcpSocket::newSocket() const
   330 {
   321 {
   343     return socket;
   334     return socket;
   344 }
   335 }
   345 
   336 
   346 void tst_QTcpSocket::cleanup()
   337 void tst_QTcpSocket::cleanup()
   347 {
   338 {
   348 #ifdef TEST_QNETWORK_PROXY
       
   349     QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
   339     QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
   350 #endif
       
   351 }
   340 }
   352 
   341 
   353 void tst_QTcpSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
   342 void tst_QTcpSocket::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth)
   354 {
   343 {
   355     ++proxyAuthCalled;
   344     ++proxyAuthCalled;
  1320 
  1309 
  1321 //----------------------------------------------------------------------------------
  1310 //----------------------------------------------------------------------------------
  1322 void tst_QTcpSocket::dontCloseOnTimeout()
  1311 void tst_QTcpSocket::dontCloseOnTimeout()
  1323 {
  1312 {
  1324     QTcpServer server;
  1313     QTcpServer server;
  1325 #ifdef TEST_QNETWORK_PROXY
       
  1326     server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
  1314     server.setProxy(QNetworkProxy(QNetworkProxy::NoProxy));
  1327 #endif
       
  1328     QVERIFY(server.listen());
  1315     QVERIFY(server.listen());
  1329 
  1316 
  1330     QHostAddress serverAddress = QHostAddress::LocalHost;
  1317     QHostAddress serverAddress = QHostAddress::LocalHost;
  1331     if (!(server.serverAddress() == QHostAddress::Any))
  1318     if (!(server.serverAddress() == QHostAddress::Any))
  1332         serverAddress = server.serverAddress();
  1319         serverAddress = server.serverAddress();
  1791     QVERIFY(socket->waitForReadyRead(10000));
  1778     QVERIFY(socket->waitForReadyRead(10000));
  1792 
  1779 
  1793     QCOMPARE(readyReadSpy.count(), 1);
  1780     QCOMPARE(readyReadSpy.count(), 1);
  1794 
  1781 
  1795     QString s = socket->readLine();
  1782     QString s = socket->readLine();
  1796 #ifdef TEST_QNETWORK_PROXY
       
  1797     QNetworkProxy::ProxyType proxyType = QNetworkProxy::applicationProxy().type();
       
  1798 #endif
       
  1799     QCOMPARE(s.toLatin1().constData(), QtNetworkSettings::expectedReplyIMAP().constData());
  1783     QCOMPARE(s.toLatin1().constData(), QtNetworkSettings::expectedReplyIMAP().constData());
  1800     QCOMPARE(socket->bytesAvailable(), qint64(0));
  1784     QCOMPARE(socket->bytesAvailable(), qint64(0));
  1801 
  1785 
  1802     QCoreApplication::instance()->processEvents();
  1786     QCoreApplication::instance()->processEvents();
  1803     QCOMPARE(socket->bytesAvailable(), qint64(0));
  1787     QCOMPARE(socket->bytesAvailable(), qint64(0));
  2250     QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
  2234     QVERIFY2(socket.state() == QAbstractSocket::UnconnectedState, "Socket connected unexpectedly!");
  2251     QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
  2235     QVERIFY2(socket.error() == QAbstractSocket::ConnectionRefusedError,
  2252              QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
  2236              QString("Could not reach server: %1").arg(socket.errorString()).toLocal8Bit());
  2253 }
  2237 }
  2254 
  2238 
  2255 
       
  2256 
       
  2257 #ifdef TEST_QNETWORK_PROXY
       
  2258 void tst_QTcpSocket::invalidProxy_data()
  2239 void tst_QTcpSocket::invalidProxy_data()
  2259 {
  2240 {
  2260     QTest::addColumn<int>("type");
  2241     QTest::addColumn<int>("type");
  2261     QTest::addColumn<QString>("host");
  2242     QTest::addColumn<QString>("host");
  2262     QTest::addColumn<int>("port");
  2243     QTest::addColumn<int>("port");
  2431     // Sometimes, error codes change for the better
  2412     // Sometimes, error codes change for the better
  2432     QTEST(int(socket->error()), "expectedError");
  2413     QTEST(int(socket->error()), "expectedError");
  2433 
  2414 
  2434     delete socket;
  2415     delete socket;
  2435 }
  2416 }
  2436 #endif
       
  2437 
  2417 
  2438 
  2418 
  2439 QTEST_MAIN(tst_QTcpSocket)
  2419 QTEST_MAIN(tst_QTcpSocket)
  2440 #include "tst_qtcpsocket.moc"
  2420 #include "tst_qtcpsocket.moc"