#!/usr/bin/env php id->range('1-10'); $table->m->range('0-59'); $table->h->range('0-23'); $table->dom->range('1-31'); $table->mon->range('1-12'); $table->dow->range('0-6'); $table->command->range('echo \"test\",php test.php,/bin/bash script.sh'); $table->remark->range('测试任务1,测试任务2,系统任务'); $table->type->range('zentao,system'); $table->buildin->range('0,1'); $table->status->range('normal{3},stop{2},running{1}'); $table->gen(6); // 2. 用户登录 su('admin'); // 3. 创建测试实例 $cronTest = new cronModelTest(); // 设置部分记录的lastTime为NULL且status不为stop $cronTest->objectModel->dao->update(TABLE_CRON)->set('lastTime')->eq(NULL)->set('status')->eq('normal')->where('id')->in('1,2,3')->exec(); // 4. 测试步骤执行 r($cronTest->checkChangeTest()) && p() && e('1'); // 步骤1:存在lastTime为NULL且status不为stop的定时任务 // 更新所有定时任务的lastTime $cronTest->objectModel->dao->update(TABLE_CRON)->set('lastTime')->eq(helper::now())->exec(); r($cronTest->checkChangeTest()) && p() && e('0'); // 步骤2:所有定时任务都有lastTime值 // 重置数据:设置一个lastTime为NULL但status为stop的定时任务 $cronTest->objectModel->dao->update(TABLE_CRON)->set('lastTime')->eq(NULL)->set('status')->eq('stop')->where('id')->eq(1)->exec(); r($cronTest->checkChangeTest()) && p() && e('0'); // 步骤3:存在lastTime为NULL但status为stop的定时任务 // 混合状态测试:部分有lastTime,部分为NULL但status为stop $cronTest->objectModel->dao->update(TABLE_CRON)->set('lastTime')->eq(helper::now())->exec(); $cronTest->objectModel->dao->update(TABLE_CRON)->set('lastTime')->eq(NULL)->set('status')->eq('stop')->where('id')->in('1,2')->exec(); r($cronTest->checkChangeTest()) && p() && e('0'); // 步骤4:混合状态测试 // 清空所有数据 $cronTest->objectModel->dao->delete()->from(TABLE_CRON)->exec(); r($cronTest->checkChangeTest()) && p() && e('0'); // 步骤5:空数据库测试 // 重新插入多个lastTime为NULL且status不为stop的定时任务 $cronTest->objectModel->dao->insert(TABLE_CRON)->data(array( 'id' => 1, 'm' => '0', 'h' => '1', 'dom' => '*', 'mon' => '*', 'dow' => '*', 'command' => 'echo \"test1\"', 'remark' => '测试任务1', 'type' => 'zentao', 'buildin' => 0, 'status' => 'normal', 'lastTime' => NULL ))->exec(); $cronTest->objectModel->dao->insert(TABLE_CRON)->data(array( 'id' => 2, 'm' => '30', 'h' => '2', 'dom' => '*', 'mon' => '*', 'dow' => '*', 'command' => 'echo \"test2\"', 'remark' => '测试任务2', 'type' => 'system', 'buildin' => 0, 'status' => 'normal', 'lastTime' => NULL ))->exec(); r($cronTest->checkChangeTest()) && p() && e('1'); // 步骤6:多个lastTime为NULL且status不为stop的定时任务 // 边界状态测试:status为normal但lastTime为NULL $cronTest->objectModel->dao->delete()->from(TABLE_CRON)->exec(); $cronTest->objectModel->dao->insert(TABLE_CRON)->data(array( 'id' => 1, 'm' => '15', 'h' => '3', 'dom' => '*', 'mon' => '*', 'dow' => '*', 'command' => 'php /path/to/script.php', 'remark' => '边界测试任务', 'type' => 'zentao', 'buildin' => 1, 'status' => 'normal', 'lastTime' => NULL ))->exec(); r($cronTest->checkChangeTest()) && p() && e('1'); // 步骤7:边界状态测试