src/3rdparty/libconninet/tests/ut_maemo_icd.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 01:19:32 +0300
changeset 37 758a864f9613
permissions -rw-r--r--
Revision: 201037 Kit: 201039

/*
 * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 *
 * Contact: Jukka Rissanen <jukka.rissanen@nokia.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * version 2.1 as published by the Free Software Foundation.
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 */


// !!!!
// !!!! NOTE: THESE TEST DO NOT REALLY WORK YET BECAUSE OF MISSING
// !!!!       FUNCTIONALITY IN ICD2 STUB. YOU HAVE BEEN WARNED.
// !!!!


#include <QtTest/QtTest>
#include <QCoreApplication>
#include <QEventLoop>
#include <QDebug>
#include <icd/dbus_api.h>

#include "maemo_icd.h"

class Ut_MaemoIcd : public QObject
{
    Q_OBJECT

private Q_SLOTS:
    void init();
    void cleanup();
    void initTestCase();
    void cleanupTestCase();

    void scan_req();
    void scan_cancel_req();
    void connect_req_default();
    void state_req_all();
    void state_req();
    void statistics_req_all();
    void statistics_req();
    void addrinfo_req_all();
    void addrinfo_req();

private:
    void disconnect_req_default(); // this is currently not run
    void connect_req_specific();   // this is currently not run
    QProcess *icd_stub;
    bool connect_iap(Maemo::IcdConnectResult &connect_result,
		     QString &result,
		     QString &error,
		     QString iap=QString());
};


QString create_error_str(Maemo::Icd &icd)
{
    return icd.error();
}


void Ut_MaemoIcd::init()
{
    icd_stub = new QProcess(this);
    icd_stub->setStandardOutputFile("/tmp/ut_maemo_icd.log");
    icd_stub->start("/usr/bin/icd2_stub.py");
    QTest::qWait(1000);

    // Set the statistics
    QProcess dbus_send;
    dbus_send.start("dbus-send --type=method_call --system "
		    "--dest=com.nokia.icd2 /com/nokia/icd2 "
		    "com.nokia.icd2.testing.set_statistics "
		    "uint32:1024 uint32:256");
    dbus_send.waitForFinished();

}

void Ut_MaemoIcd::cleanup()
{
    icd_stub->terminate();
    icd_stub->waitForFinished();
}

void Ut_MaemoIcd::initTestCase()
{
} 

void Ut_MaemoIcd::cleanupTestCase()
{
}

void Ut_MaemoIcd::scan_req()
{    
    QList<Maemo::IcdScanResult> scanned;
    QStringList scannedNetworkTypes;
    QStringList networkTypesToScan;
    QString error;
    Maemo::Icd icd(ICD_SHORT_SCAN_TIMEOUT);

    scannedNetworkTypes = icd.scan(ICD_SCAN_REQUEST_ACTIVE,
				   networkTypesToScan,
				   scanned,
				   error);
    QVERIFY(error.isEmpty());
    QCOMPARE(scanned.size(), 3);
    QVERIFY(scannedNetworkTypes[0] == "WLAN_INFRA");
    QVERIFY(scannedNetworkTypes[1] == "DUN_GSM_PS");
}

void Ut_MaemoIcd::scan_cancel_req()
{
    Maemo::Icd icd;
    icd.scanCancel();
    // Not much to verify here
}

bool Ut_MaemoIcd::connect_iap(Maemo::IcdConnectResult &connect_result,
			      QString &result,
			      QString &error,
			      QString iap)
{
    icd_connection_flags flags = ICD_CONNECTION_FLAG_USER_EVENT;
    bool st;
    Maemo::Icd icd(ICD_SHORT_CONNECT_TIMEOUT);

    if (iap.isEmpty()) {
      qDebug() << "connecting to default IAP";
      st = icd.connect(flags, connect_result);
    } else {
      qDebug() << "connecting to" << iap;
      st = icd.connect(flags, iap, result);
    }

    error = create_error_str(icd);
    return st;
}

void Ut_MaemoIcd::connect_req_default()
{
    Maemo::IcdConnectResult connect_result;
    QString result, error;
    bool st;
    st = connect_iap(connect_result, result, error);
    QVERIFY2(st, error.toAscii().data());
    result = connect_result.connect.network_id.data();
    qDebug() << result;
}


void Ut_MaemoIcd::disconnect_req_default()
{
    icd_connection_flags flags = ICD_CONNECTION_FLAG_USER_EVENT;
    bool st;
    Maemo::Icd icd(ICD_SHORT_CONNECT_TIMEOUT);
    icd.disconnect(flags);
}


void Ut_MaemoIcd::connect_req_specific()
{
    Maemo::IcdConnectResult connect_result;
    QString result;
    QString error;
    bool st;
    st = connect_iap(connect_result, result, error, "wpa2gx2.osso.net");
    QVERIFY2(st, error.toAscii().data());
    qDebug() << result;
}


void Ut_MaemoIcd::state_req_all()
{
    QList<Maemo::IcdStateResult> state_results;
    Maemo::Icd icd;
    int sig;
    sig = icd.state(state_results);
    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
}


void Ut_MaemoIcd::state_req()
{
    Maemo::IcdStateResult state_result;
    Maemo::Icd icd;
    int sig;
    QString service_type, service_id;
    QString network_type("WLAN_INFRA");
    QByteArray network_id("wpa2gx2.osso.net");
    sig = icd.state(service_type, 0, service_id,
		    network_type, (uint)0x17a1, network_id,
		    state_result);
    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
}


void Ut_MaemoIcd::statistics_req_all()
{
    QList<Maemo::IcdStatisticsResult> stats_results;
    Maemo::Icd icd;
    int sig;
    QString err;
    sig = icd.statistics(stats_results);
    err = create_error_str(icd);
    if (!err.isEmpty())
      QVERIFY2(sig==1, err.toAscii().data());
    else
      QCOMPARE(sig, 1);

    for(int i=0; i<sig; i++) {
        QVERIFY(stats_results[i].bytes_received == 1024);
        QVERIFY(stats_results[i].bytes_sent == 256);
    }
}


// Can be uncommented when needed function is enabled in Icd class
void Ut_MaemoIcd::statistics_req()
{
    Maemo::IcdStatisticsResult stats_result;
    Maemo::Icd icd;
    int sig;
    QString service_type, service_id;
    QString network_type("WLAN_INFRA");
    QByteArray network_id("wpa2gx2.osso.net");
    sig = icd.statistics(service_type, 0, service_id,
			 network_type, (uint)0x17a1, network_id,
			 stats_result);
    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
    QVERIFY(stats_result.bytes_received == 1024);
    QVERIFY(stats_result.bytes_sent == 256);
}


void Ut_MaemoIcd::addrinfo_req_all()
{
    QList<Maemo::IcdAddressInfoResult> addr_results;
    Maemo::Icd icd;
    int sig;
    sig = icd.addrinfo(addr_results);
    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
}


void Ut_MaemoIcd::addrinfo_req()
{
    Maemo::IcdAddressInfoResult addr_result;
    Maemo::Icd icd;
    int sig;
    QString service_type, service_id;
    QString network_type("WLAN_INFRA");
    QByteArray network_id("wpa2gx2.osso.net");
    sig = icd.addrinfo(service_type, 0, service_id,
			 network_type, (uint)0x17a1, network_id,
			 addr_result);
    QVERIFY2(sig==1, create_error_str(icd).toAscii().data());
}


QTEST_MAIN(Ut_MaemoIcd)

#include "ut_maemo_icd.moc"