Ns2中的测试用例

发表于:2007-8-28 15:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:快乐虾    来源:快乐虾的专栏

分享:
// Start the child process.
     if( !CreateProcess( NULL,   // No module name (use command line).
         cmd, // Command line.
         NULL,             // Process handle not inheritable.
         NULL,             // Thread handle not inheritable.
         FALSE,            // Set handle inheritance to FALSE.
         0,                // No creation flags.
         NULL,             // Use parent's environment block.
         TEST_PATH,             // Use parent's starting directory.
         &si,              // Pointer to STARTUPINFO structure.
         &pi )             // Pointer to PROCESS_INFORMATION structure.
     )
     {
         printf( "%s failed (%d).\n", cmd, GetLastError() );
         exit(1);
     }
     WaitForSingleObject( pi.hProcess, INFINITE );
     GetExitCodeProcess(pi.hProcess, &code);
     CloseHandle( pi.hProcess );
     CloseHandle( pi.hThread );
     if(code != 0)
     {
         printf("%s failed with code (%d)\n", cmd, code);
         exit(code);
     }
}
 
bool IsComment(char* p)
{
     while((*p == ' ' || *p == '\t') && *p != 0) p++;
     return *p == '#';
}
 
void ProcessOneFile(char* file_name)
{
     // 处理一个文件
     char tcl_file[MAX_PATH];
     sprintf(tcl_file, "%stest-suite-%s.tcl", TEST_PATH, file_name);
     ifstream src(tcl_file);
     if(!src.is_open())
     {
         printf("%s open failed!\n", tcl_file);
         return;
     }
     sprintf(tcl_file, "%s_tmp.tcl", TEST_PATH);
     FILE* dst = fopen(tcl_file, "wt");
     if(dst == NULL)
     {
         printf("create temp tcl failed\n");
         src.close();
         return;
     }
     fprintf(dst, "set PERL {perl}\n");
     fprintf(dst, "set quiet true\n");
     char cClass[1000][100];
     int nClass = 0;
     while(!src.eof())
     {
         char line[2048];
         char* p;
         src.getline(line, 2048);
         if(IsComment(line)) continue;
         if(strstr(line, "Class") && (p = strstr(line, "Test/")))
         {
              int idx = 0;
              p += 5;
              while(*p != 0 && *p != ' ') cClass[nClass][idx++] = *p++;
              cClass[nClass][idx] = 0;
              nClass++;
         }
         else if(strstr(line, "xgraph"))
         {
              fprintf(dst, "#");
         }
         fprintf(dst, "%s\n", line);
     }
     src.close();
     fclose(dst);
 
     // 执行TCL文件并进行比较
     for(int i = 0; i < nClass; i++)
     {
         printf("%s testcase begin...", cClass[i]);
 
         char cmd[2560];
         sprintf(cmd, "%s %s_tmp.tcl %s", NS_PATH, TEST_PATH, cClass[i]);
         Exec(cmd);
 
         // 备份压缩文件
         sprintf(cmd, "cp %stest-output-%s\\%s.Z %stest-output-%s\\%s_bak.Z", TEST_PATH, file_name, cClass[i], TEST_PATH, file_name, cClass[i]);
         Exec(cmd);
 
         // 解压缩
         sprintf(cmd, "gzip -daf %stest-output-%s\\%s.Z", TEST_PATH, file_name, cClass[i]);
         Exec(cmd);
 
         // 还原压缩文件
         sprintf(cmd, "mv %stest-output-%s\\%s_bak.Z %stest-output-%s\\%s.Z", TEST_PATH, file_name, cClass[i], TEST_PATH, file_name, cClass[i]);
         Exec(cmd);
 
         // 比较文件
         char f1[MAX_PATH], f2[MAX_PATH];
         sprintf(f1, "%stest-output-%s\\%s", TEST_PATH, file_name, cClass[i]);
         sprintf(f2, "%stemp.rands", TEST_PATH);
         Compare(f1, f2);
 
         // 删除解压缩后的文件
         sprintf(cmd, "rm -f %stest-output-%s\\%s", TEST_PATH, file_name, cClass[i]);
         Exec(cmd);
 
         printf("OK\n");
     }
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
32/3<123>
重磅发布,2022软件测试行业现状调查报告~

精彩评论

  • liujihui226
    2007-9-10 15:37:31

    代码这么多看不太懂

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号