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; }
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(); }
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(); }
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)); }
void ReplicationTest::ReportResult(bool success,int ticks) { QSqlDatabase::removeDatabase("repl_db"); emit testComplete(success,ticks*AM_REPLICATION_TICK_INTERVAL); }