Esempio n. 1
0
bool ReplicationTest::startTest(int val)
{
  if(isActive()) {
    return false;
  }
  repl_value=val;
  repl_ticks=0;

  //
  // Open Database
  //
  QSqlDatabase db=
    QSqlDatabase::addDatabase(repl_config->globalMysqlDriver(),"repl_db");
  db.setDatabaseName(repl_config->globalMysqlDatabase());
  db.setUserName(repl_config->mysqlUsername(Am::That));
  db.setPassword(repl_config->mysqlPassword(Am::That));
  db.setHostName(repl_config->address(Am::That,repl_addr).toString());
  if(!db.open()) {
    syslog(LOG_ERR,"cannot connect to mysql at %s [%s]",
	   (const char *)repl_config->address(Am::That,repl_addr).toString().
	   toAscii(),
	   (const char *)db.lastError().text().toAscii());
    emit testComplete(false,0);
    return true;
  }

  repl_timer->start(AM_REPLICATION_TICK_INTERVAL);

  return true;
}
Esempio n. 2
0
void SamView::addTestConfiguration(TestConfigurationWidget* config)
{
  connect(config, SIGNAL(destroyed()), this, SLOT(testConfigurationRemoved()));
  connect(config, SIGNAL(tagChanged()), this, SLOT(testConfigTagChanged()));
  connect(config, SIGNAL(changed()), this, SLOT(setDirty()));
  testConfigurations << config;
  ui.vlTestConfigurations->addWidget(config);

  TestResultWidget *result = new TestResultWidget(config, this);
  connect(result, SIGNAL(testComplete()), this, SLOT(subTestComplete()));
  connect(result, SIGNAL(testAborted()), this, SLOT(subTestAborted()));
  connect(result, SIGNAL(testStarted()), this, SLOT(subTestStarted()));
  connect(result, SIGNAL(destroyed()), this, SLOT(testResultRemoved()));
  testResults << result;
  ui.twTestResults->addTab(result, config->tag());
  setDirty();
}
Esempio n. 3
0
void testAllTests(void)
{
    int         i;
    int         testResult = 0;

	_freeErrorMessage();
    for(i=0; m_ProcTable[i].pszTitle ; i++) {
        /*-- Condition File이 있고 그 결과가 0 일때는 skip 한다 --*/
        if(m_ProcTable[i].pfnCond && !m_ProcTable[i].pfnCond()) continue;

        printf("        %02d. %-10s ", i+1, m_ProcTable[i].pszTitle); fflush(stdout);
        if(enableVerbose) printf("\n");
        printf("%s [%s]\n", enableVerbose ? "        " : "", 
            (m_ProcTable[i].pfnFunc(), errorMessage) 
                ? "\033[1;40;31mFAIL\033[0m" : "\033[1;40;34mPASS\033[0m");
        testResult |= errorMessage ? 1 : 0;
		if(!enableVerbose) _printErrorMessage();
		_freeErrorMessage();
    }
    if(!testResult) testComplete();
}
Esempio n. 4
0
int main(int argc, char * argv[])
{
    int optionIndex = 0;
    const char* paramModuleName = "ge910";
    const char* paramModulePath = "/dev/ttyO1";
    const char* paramModuleVendor = "telit";
    unsigned int nTestMask = TEST_MASK_ALL;
    int c, i;
    char *p, *token;

    // Parameter setting
    memset(&m_ResourceParam, 0, sizeof(RESOURCE_CHECK));
    memset(&m_MobileParam, 0, sizeof(MOBILE_CHECK));
    memset(&m_ZbParam, 0, sizeof(ZIGBEE_CHECK));
    memset(&m_CtrlParam, 0, sizeof(CONTROL_CHECK));

    m_ResourceParam.memSize = 512;
    m_CtrlParam.nWaitTime = 60;
    strcpy(m_MobileParam.moduleType, paramModuleName);
    strcpy(m_MobileParam.modulePath, paramModulePath);
    strcpy(m_MobileParam.moduleVendor, paramModuleVendor);

    while((c = getopt_long(argc, argv, "dh", long_options, &optionIndex)) != -1)
    {
        switch(c)
        {
            case 'd':
                m_nDebugLevel = 0;
                break;
            case OPT_MODULE:
                strcpy(m_MobileParam.moduleType, optarg);
                break;
            case OPT_MODULE_PATH:
                strcpy(m_MobileParam.modulePath, optarg);
                break;
            case OPT_MODULE_VENDOR:
                strcpy(m_MobileParam.moduleVendor, optarg);
                break;
            case OPT_ZB_FWVER:
                m_ZbParam.fwVersion = (float)strtof(optarg,(char**)NULL);
                break;
            case OPT_ZB_FWBUILD:
                m_ZbParam.fwBuild = (int)strtol(optarg,(char**)NULL, 10);
                break;
            case OPT_ZB_LINK_KEY:
                m_ZbParam.bChkLinkKey = true;
                for(p=optarg,i=0; i<16 ; p=NULL, i++)
                {
                    token = strtok(p," ");
                    if(token == NULL) break;
                    m_ZbParam.linkKey[i] = (unsigned char)(strtol(token,(char**)NULL,16)&0xFF);
                }
                break;
            case OPT_ZB_NETWORK_KEY:
                m_ZbParam.bChkNetworkKey = true;
                for(p=optarg,i=0; i<16 ; p=NULL,i++)
                {
                    token = strtok(p," ");
                    if(token == NULL) break;
                    m_ZbParam.networkKey[i] = (unsigned char)(strtol(token,(char**)NULL,16)&0xFF);
                }
                break;
            case OPT_ZB_TX_POWER:
                m_ZbParam.bChkTxPower = true;
                m_ZbParam.txPower = (int)strtol(optarg,(char**)NULL,10);
                break;
            case OPT_ZB_TX_MODE:
                m_ZbParam.bChkTxMode = true;
                m_ZbParam.txMode = (int)strtol(optarg,(char**)NULL,10);
                break;
            case OPT_R_HW_VERSION:
                m_ResourceParam.hwVersion = (float)strtof(optarg,(char**)NULL);
                break;
            case OPT_R_MEM_SIZE:
                m_ResourceParam.memSize = (int)strtol(optarg, (char**)NULL, 10);
                break;
            case OPT_C_WAIT_TIME:
                m_CtrlParam.nWaitTime = (int)strtol(optarg, (char**)NULL, 10);
                break;
            case OPT_DISABLE_GPIO: nTestMask &= ~(TEST_MASK_GPIO); break;
            case OPT_DISABLE_RESOURCE: nTestMask &= ~(TEST_MASK_RESOURCE); break;
            case OPT_DISABLE_ZB: nTestMask &= ~(TEST_MASK_ZB); break;
            case OPT_DISABLE_MOBILE: nTestMask &= ~(TEST_MASK_MOBILE); break;
            case OPT_DISABLE_CONTROL: nTestMask &= ~(TEST_MASK_CONTROL); break;
            /** Fake Test parameter */
            case OPT_ENABLE_FAKE_TEST: g_bFakeTest = true; break;
            case OPT_FAKE_RATIO: 
                /** Random 하게 발생할 오류를 위한 비율. 백분율이 아니라 천분율(10^-4) 값이다 */
                g_nFakeRatio = (int)strtol(optarg, (char**)NULL, 10);
                {
                    time_t now;
                    time(&now);
                    srand(now);
                }
                break;
            case 'h':
            default:
                usage(argv[0]);
                break;
        }
    }

    if(m_ResourceParam.hwVersion == 0.0)
    {
        XDEBUG("Invalid parameter (need hw version)\r\n");
        usage(argv[0]);
    }

    XDEBUG("NURITelecom NDC-I331 hwtest v1.0");
    fprintf(stdout,"%s v%3.1f", argv[0], VERSION);
    printResourceOptions(&m_ResourceParam);
    printMobileOptions(&m_MobileParam);
    printZbOptions(&m_ZbParam);
    printCtrlOptions(&m_CtrlParam);
    fprintf(stdout,"\n");

    UINT nAddr, nSubNet, nGateway;
    BYTE mac[6] = {0,};
    GetEthernetInfo(const_cast<char*>("eth0"), &nAddr, &nSubNet, &nGateway, mac);

    /** Fake Test 일 경우 MAC Address를 가상으로 만든다 */
    if(g_bFakeTest)
    {
        unsigned int nmac = 0;
        FILE *fp = fopen("/app/sw/fakemac.dat", "r");
        if(fp != NULL)
        {
            fscanf(fp, "%u", &nmac);
            fclose(fp);
        }
        unsigned int bnmac = htonl(nmac);
        memcpy(mac, &bnmac, 4);
        // 하나 증가
        nmac ++;
        if((fp = fopen("/app/sw/fakemac.dat", "w")) != NULL)
        {
            fprintf(fp,"%u", nmac);
            fclose(fp);
        }
    }

    fprintf(stdout,"ID %02X:%02X:%02X:%02X:%02X:%02X\n",
            mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);

    // GPIO Initialize
    GPIOAPI_Initialize(TRUE, paramModuleName, FALSE);

    // Run Test
    char* result;
    int idx=0, subidx=0;
    int tcnt=1;
    TEST_GROUP *pGroup;

    struct  timeval tmStart, tmGStart, tmTStart, tmNow;

    gettimeofday((struct timeval *)&tmStart, NULL);
    for(;m_TestSheet[idx].name != NULL; idx++)
    {
        if(!(m_TestSheet[idx].testMask & nTestMask)) continue;

        gettimeofday((struct timeval *)&tmGStart, NULL);
        fprintf(stdout,"%s check start\n", m_TestSheet[idx].name);

        pGroup = m_TestSheet[idx].testGroup;
        for(subidx=0; pGroup[subidx].name != NULL; subidx++)
        {
            gettimeofday((struct timeval *)&tmTStart, NULL);
            fprintf(stdout,"%d %s check ", tcnt++, pGroup[subidx].name); fflush(stdout);
            if((result=pGroup[subidx].fn(pGroup[subidx].param[0],
                            pGroup[subidx].param[1],
                            pGroup[subidx].param[2],
                            pGroup[subidx].param[3])) != NULL)
            {
                char* newLine = strchr(result,'\n');
                if(newLine != NULL) *newLine = 0x00;

                gettimeofday((struct timeval *)&tmNow, NULL);
                fprintf(stdout," [%s] %d\n", result, GetTimevalInterval(&tmTStart, &tmNow));
                fprintf(stdout,"%s check end %d\n", m_TestSheet[idx].name, GetTimevalInterval(&tmGStart, &tmNow));
                goto BREAK;
            }
            else
            {
                gettimeofday((struct timeval *)&tmNow, NULL);
                fprintf(stdout," [Ok] %d\n", GetTimevalInterval(&tmTStart, &tmNow));
            }
        }
        gettimeofday((struct timeval *)&tmNow, NULL);
        fprintf(stdout,"%s check end %d\n", m_TestSheet[idx].name, GetTimevalInterval(&tmGStart, &tmNow));
    }
    gettimeofday((struct timeval *)&tmNow, NULL);
    fprintf(stdout,"Test Result [Ok] %d\n", GetTimevalInterval(&tmStart, &tmNow));


    /** Fake Test 일 경우 */
    if(g_bFakeTest)
    {
        FILE *fp = fopen("/app/sw/fakesucc.list", "a");
        if(fp != NULL)
        {
            fprintf(fp,"ID %02X:%02X:%02X:%02X:%02X:%02X\n",
                mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
            fclose(fp);
        }
    }
    else
    {
        testComplete(); // Success
    }
    m_pMobileClient->Destroy();

    return 0;
BREAK:
    gettimeofday((struct timeval *)&tmNow, NULL);
    fprintf(stdout,"Test Result [Fail] %d\n", GetTimevalInterval(&tmStart, &tmNow));
    if(g_bFakeTest)
    {
        FILE *fp = fopen("/app/sw/fakefail.list", "a");
        if(fp != NULL)
        {
            fprintf(fp,"ID %02X:%02X:%02X:%02X:%02X:%02X\n",
                mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
            fclose(fp);
        }
    }
    m_pMobileClient->Destroy();
    return 1;
}
void HelperTestQtSigSlotSpeed::runTest()
{
    QThread thread_receiver;
    thread_receiver.start();

    Receiver * r0 = new Receiver();
    r0->moveToThread(&thread_receiver);

    connect(this,SIGNAL(signalThing(Thing)),
            r0,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalStopThread(QThread*)),
            r0,SLOT(OnSignalStopThread(QThread*)));

    Thing thing;

    // test 1 signal -> 1 slot
    size_t one_one_count=1000;
    std::chrono::time_point<std::chrono::steady_clock> start,end;
    start = std::chrono::steady_clock::now();

    for(size_t i=0; i < one_one_count; i++) {
        emit signalThing(thing);
    }
    emit signalStopThread(&thread_receiver);
    thread_receiver.wait();

    end = std::chrono::steady_clock::now();
    std::chrono::microseconds elapsed_ms =
            std::chrono::duration_cast<std::chrono::microseconds>(
                end-start);

    QString time_to_string =
            QString::number(elapsed_ms.count());

    std::string message0 = "1:1 signal:slot mapping:\n"
                          "1000 signals took: " +
            time_to_string.toStdString() + " us";

    // ============================================================= //

    thread_receiver.start();

    Receiver * r1 = new Receiver();
    Receiver * r2 = new Receiver();
    Receiver * r3 = new Receiver();

    r1->moveToThread(&thread_receiver);
    r2->moveToThread(&thread_receiver);
    r3->moveToThread(&thread_receiver);

    connect(this,SIGNAL(signalThing(Thing)),
            r1,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalThing(Thing)),
            r2,SLOT(OnSignalThing(Thing)));

    connect(this,SIGNAL(signalThing(Thing)),
            r3,SLOT(OnSignalThing(Thing)));

    // test 1 signal -> 4 slots
    size_t one_many_count=1000;
    start = std::chrono::steady_clock::now();

    for(size_t i=0; i < one_many_count; i++) {
        emit signalThing(thing);
    }
    emit signalStopThread(&thread_receiver);
    thread_receiver.wait();

    end = std::chrono::steady_clock::now();
    elapsed_ms = std::chrono::duration_cast<
            std::chrono::microseconds>(end-start);

    disconnect(this,SIGNAL(signalThing(Thing)),
               r0,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalStopThread(QThread*)),
               r0,SLOT(OnSignalStopThread(QThread*)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r1,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r2,SLOT(OnSignalThing(Thing)));

    disconnect(this,SIGNAL(signalThing(Thing)),
               r3,SLOT(OnSignalThing(Thing)));

    r0->deleteLater();
    r1->deleteLater();
    r2->deleteLater();
    r3->deleteLater();

    time_to_string = QString::number(elapsed_ms.count());

    std::string message1 = "\n\n1:4 signal:slot mapping:\n"
                           "1000 signals took: " +
            time_to_string.toStdString() + " us";


    emit testComplete(QString::fromStdString(message0+message1));
}
Esempio n. 6
0
void ReplicationTest::ReportResult(bool success,int ticks)
{
  QSqlDatabase::removeDatabase("repl_db");
  emit testComplete(success,ticks*AM_REPLICATION_TICK_INTERVAL);
}