提交 d1c24b27 编写于 作者: A ainilife

Refator abtest in cat-home module due to the change of abtest model

上级 60f337ef
...@@ -16,5 +16,5 @@ ...@@ -16,5 +16,5 @@
<run /> <run />
</runs> </runs>
</case> </case>
<case /> <case/>
</abtest-model> </abtest-model>
\ No newline at end of file
...@@ -22,9 +22,6 @@ final class CatDatabaseConfigurator extends AbstractJdbcResourceConfigurator { ...@@ -22,9 +22,6 @@ final class CatDatabaseConfigurator extends AbstractJdbcResourceConfigurator {
defineSimpleTableProviderComponents(all, "cat", com.dianping.cat.home.dal.abtest._INDEX.getEntityClasses()); defineSimpleTableProviderComponents(all, "cat", com.dianping.cat.home.dal.abtest._INDEX.getEntityClasses());
defineDaoComponents(all, com.dianping.cat.home.dal.abtest._INDEX.getDaoClasses()); defineDaoComponents(all, com.dianping.cat.home.dal.abtest._INDEX.getDaoClasses());
defineSimpleTableProviderComponents(all, "cat", com.dainping.cat.consumer.dal.report._INDEX.getEntityClasses());
defineDaoComponents(all, com.dainping.cat.consumer.dal.report._INDEX.getDaoClasses());
return all; return all;
} }
} }
...@@ -16,7 +16,6 @@ import com.dainping.cat.consumer.dal.report.ReportDao; ...@@ -16,7 +16,6 @@ import com.dainping.cat.consumer.dal.report.ReportDao;
import com.dainping.cat.consumer.dal.report.TaskDao; import com.dainping.cat.consumer.dal.report.TaskDao;
import com.dianping.cat.CatHomeModule; import com.dianping.cat.CatHomeModule;
import com.dianping.cat.configuration.ServerConfigManager; import com.dianping.cat.configuration.ServerConfigManager;
import com.dianping.cat.home.dal.abtest.AbtestDao;
import com.dianping.cat.home.dal.report.DailygraphDao; import com.dianping.cat.home.dal.report.DailygraphDao;
import com.dianping.cat.home.dal.report.DailyreportDao; import com.dianping.cat.home.dal.report.DailyreportDao;
import com.dianping.cat.home.dal.report.GraphDao; import com.dianping.cat.home.dal.report.GraphDao;
...@@ -208,7 +207,6 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { ...@@ -208,7 +207,6 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
// for alarm module // for alarm module
all.addAll(new AlarmComponentConfigurator().defineComponents()); all.addAll(new AlarmComponentConfigurator().defineComponents());
// for abtest module
return all; return all;
} }
} }
...@@ -4,39 +4,48 @@ import java.util.Date; ...@@ -4,39 +4,48 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
import com.dianping.cat.home.dal.abtest.Abtest; import com.dianping.cat.home.dal.abtest.Abtest;
import com.dianping.cat.home.dal.abtest.AbtestRun;
public class ABTestReport { public class ABTestReport {
private Abtest m_entity; private Abtest m_entity;
private AbtestRun m_run;
private AbtestStatus m_status; private AbtestStatus m_status;
private Map<String, String> m_items; private Map<String, String> m_items;
public ABTestReport(Abtest entity) { public ABTestReport(Abtest entity, AbtestRun run) {
m_entity = entity; m_entity = entity;
m_run = run;
} }
public ABTestReport(Abtest entity, Date now) { public ABTestReport(Abtest entity, AbtestRun run, Date now) {
m_entity = entity; m_entity = entity;
m_run = run;
setStatus(now); setStatus(now);
// TODO m_items setting // TODO m_items setting
} }
private void setStatus(Date now) { private void setStatus(Date now) {
m_status = AbtestStatus.calculateStatus(m_entity, now); m_status = AbtestStatus.calculateStatus(m_run, now);
} }
public Abtest getEntity() { public Abtest getEntity() {
return m_entity; return m_entity;
} }
public AbtestRun getRun() {
return m_run;
}
public void setStatus(AbtestStatus status) { public void setStatus(AbtestStatus status) {
m_status = status; m_status = status;
} }
public AbtestStatus getStatus() { public AbtestStatus getStatus() {
return m_status; return m_status;
} }
public Map<String, String> getItems() { public Map<String, String> getItems() {
......
...@@ -3,7 +3,7 @@ package com.dianping.cat.system.page.abtest; ...@@ -3,7 +3,7 @@ package com.dianping.cat.system.page.abtest;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import com.dianping.cat.home.dal.abtest.Abtest; import com.dianping.cat.home.dal.abtest.AbtestRun;
public enum AbtestStatus { public enum AbtestStatus {
...@@ -23,12 +23,12 @@ public enum AbtestStatus { ...@@ -23,12 +23,12 @@ public enum AbtestStatus {
return defaultStatus; return defaultStatus;
} }
public static AbtestStatus calculateStatus(Abtest abtest, Date now) { public static AbtestStatus calculateStatus(AbtestRun run, Date now) {
if (abtest.isDisabled()) { if (run.isDisabled()) {
return AbtestStatus.SUSPENDED; return AbtestStatus.SUSPENDED;
} else { } else {
Date startDate = abtest.getStartDate(); Date startDate = run.getStartDate();
Date endDate = abtest.getEndDate(); Date endDate = run.getEndDate();
if (startDate != null) { if (startDate != null) {
calendar.setTime(startDate); calendar.setTime(startDate);
......
...@@ -27,6 +27,9 @@ import com.dianping.cat.Cat; ...@@ -27,6 +27,9 @@ import com.dianping.cat.Cat;
import com.dianping.cat.home.dal.abtest.Abtest; import com.dianping.cat.home.dal.abtest.Abtest;
import com.dianping.cat.home.dal.abtest.AbtestDao; import com.dianping.cat.home.dal.abtest.AbtestDao;
import com.dianping.cat.home.dal.abtest.AbtestEntity; import com.dianping.cat.home.dal.abtest.AbtestEntity;
import com.dianping.cat.home.dal.abtest.AbtestRun;
import com.dianping.cat.home.dal.abtest.AbtestRunDao;
import com.dianping.cat.home.dal.abtest.AbtestRunEntity;
import com.dianping.cat.home.dal.abtest.GroupStrategy; import com.dianping.cat.home.dal.abtest.GroupStrategy;
import com.dianping.cat.home.dal.abtest.GroupStrategyDao; import com.dianping.cat.home.dal.abtest.GroupStrategyDao;
import com.dianping.cat.home.dal.abtest.GroupStrategyEntity; import com.dianping.cat.home.dal.abtest.GroupStrategyEntity;
...@@ -46,6 +49,9 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -46,6 +49,9 @@ public class Handler implements PageHandler<Context>, LogEnabled {
@Inject @Inject
private AbtestDao m_abtestDao; private AbtestDao m_abtestDao;
@Inject
private AbtestRunDao m_abtestRunDao;
@Inject @Inject
private ProjectDao m_projectDao; private ProjectDao m_projectDao;
...@@ -66,13 +72,19 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -66,13 +72,19 @@ public class Handler implements PageHandler<Context>, LogEnabled {
if (ctx.getHttpServletRequest().getMethod().equalsIgnoreCase("post")) { if (ctx.getHttpServletRequest().getMethod().equalsIgnoreCase("post")) {
if (action == Action.CREATE) { if (action == Action.CREATE) {
Abtest abtest = new Abtest(); Abtest abtest = new Abtest();
// TODO need more parameters for abtest
abtest.setName(payload.getName()); abtest.setName(payload.getName());
abtest.setDescription(payload.getDescription()); abtest.setDescription(payload.getDescription());
abtest.setStartDate(payload.getStartDate()); abtest.setGroupStrategy(payload.getStrategyId());
abtest.setEndDate(payload.getEndDate());
abtest.setDomains(StringUtils.join(payload.getDomains(), ',')); abtest.setDomains(StringUtils.join(payload.getDomains(), ','));
abtest.setStrategyId(payload.getStrategyId());
abtest.setStrategyConfig(payload.getStrategyConfig().getBytes(CHARSET)); AbtestRun run = new AbtestRun();
run.setStartDate(payload.getStartDate());
run.setEndDate(payload.getEndDate());
run.setDomains(StringUtils.join(payload.getDomains(), ','));
run.setStrategyConfiguration(payload.getStrategyConfig());
try { try {
m_abtestDao.insert(abtest); m_abtestDao.insert(abtest);
} catch (DalException e) { } catch (DalException e) {
...@@ -81,14 +93,19 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -81,14 +93,19 @@ public class Handler implements PageHandler<Context>, LogEnabled {
} }
} else if (action == Action.DETAIL) { } else if (action == Action.DETAIL) {
Abtest abtest = new Abtest(); Abtest abtest = new Abtest();
abtest.setKeyId(payload.getId()); abtest.setKeyId(payload.getId());
abtest.setName(payload.getName()); abtest.setName(payload.getName());
abtest.setDescription(payload.getDescription()); abtest.setDescription(payload.getDescription());
abtest.setStartDate(payload.getStartDate());
abtest.setEndDate(payload.getEndDate());
abtest.setDomains(StringUtils.join(payload.getDomains(), ',')); abtest.setDomains(StringUtils.join(payload.getDomains(), ','));
abtest.setStrategyId(payload.getStrategyId());
abtest.setStrategyConfig(payload.getStrategyConfig().getBytes(CHARSET)); AbtestRun run = new AbtestRun();
run.setStartDate(payload.getStartDate());
run.setEndDate(payload.getEndDate());
run.setDomains(StringUtils.join(payload.getDomains(), ','));
run.setStrategyConfiguration(payload.getStrategyConfig());
try { try {
m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_FULL); m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_FULL);
} catch (DalException e) { } catch (DalException e) {
...@@ -112,20 +129,20 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -112,20 +129,20 @@ public class Handler implements PageHandler<Context>, LogEnabled {
for (String id : ids) { for (String id : ids) {
System.out.println("change status for " + id); System.out.println("change status for " + id);
try { try {
int intID = Integer.parseInt(id); int runID = Integer.parseInt(id);
Abtest abtest = m_abtestDao.findByPK(intID, AbtestEntity.READSET_FULL); AbtestRun run = m_abtestRunDao.findByPK(runID, AbtestRunEntity.READSET_FULL);
if (payload.getDisableAbtest() == -1) { // suspend if (payload.getDisableAbtest() == -1) { // suspend
if (!abtest.isDisabled()) { if (!run.isDisabled()) {
abtest.setDisabled(true); run.setDisabled(true);
m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_DISABLE); m_abtestRunDao.updateByPK(run, AbtestRunEntity.UPDATESET_STATUS);
} else { } else {
error.addArgument(id, "Abtest " + id + " has been already suspended!"); error.addArgument(id, "Abtest " + id + " has been already suspended!");
} }
} else if (payload.getDisableAbtest() == 1) { // resume } else if (payload.getDisableAbtest() == 1) { // resume
if (abtest.isDisabled()) { if (run.isDisabled()) {
abtest.setDisabled(false); run.setDisabled(false);
m_abtestDao.updateByPK(abtest, AbtestEntity.UPDATESET_DISABLE); m_abtestRunDao.updateByPK(run, AbtestRunEntity.UPDATESET_STATUS);
} else { } else {
error.addArgument(id, "Abtest " + id + " has been already active!"); error.addArgument(id, "Abtest " + id + " has been already active!");
} }
...@@ -189,36 +206,48 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -189,36 +206,48 @@ public class Handler implements PageHandler<Context>, LogEnabled {
Date now = new Date(); Date now = new Date();
try { try {
entities = m_abtestDao.findAllAbtest(AbtestEntity.READSET_FULL); entities = m_abtestDao.findAll(AbtestEntity.READSET_FULL);
} catch (DalException e) { } catch (DalException e) {
Cat.logError(e); Cat.logError(e);
} }
List<Abtest> filterTests = new ArrayList<Abtest>(); List<ABTestReport> filterReports = new ArrayList<ABTestReport>();
List<ABTestReport> totalReports = new ArrayList<ABTestReport>();
int createdCount = 0, readyCount = 0, runningCount = 0, terminatedCount = 0, suspendedCount = 0; int createdCount = 0, readyCount = 0, runningCount = 0, terminatedCount = 0, suspendedCount = 0;
for (Abtest abtest : entities) { for (Abtest abtest : entities) {
ABTestReport report = new ABTestReport(abtest, now); List<AbtestRun> runs = new ArrayList<AbtestRun>();
try {
if (status != null && report.getStatus() == status) { runs = m_abtestRunDao.findByCaseId(abtest.getId(), AbtestRunEntity.READSET_FULL);
filterTests.add(abtest); } catch (DalException e) {
Cat.logError(e);
} }
switch (report.getStatus()) {
case CREATED: for(AbtestRun run : runs){
createdCount++; ABTestReport report = new ABTestReport(abtest,run, now);
break;
case READY: totalReports.add(report);
readyCount++; if (status != null && report.getStatus() == status) {
break; filterReports.add(report);
case RUNNING: }
runningCount++;
break; switch (report.getStatus()) {
case TERMINATED: case CREATED:
terminatedCount++; createdCount++;
break; break;
case SUSPENDED: case READY:
suspendedCount++; readyCount++;
break; break;
case RUNNING:
runningCount++;
break;
case TERMINATED:
terminatedCount++;
break;
case SUSPENDED:
suspendedCount++;
break;
}
} }
} }
...@@ -227,11 +256,12 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -227,11 +256,12 @@ public class Handler implements PageHandler<Context>, LogEnabled {
model.setRunningCount(runningCount); model.setRunningCount(runningCount);
model.setTerminatedCount(terminatedCount); model.setTerminatedCount(terminatedCount);
model.setSuspendedCount(suspendedCount); model.setSuspendedCount(suspendedCount);
if (status != null) { if (status != null) {
entities = filterTests; totalReports = filterReports;
} }
int totalSize = entities.size(); int totalSize = totalReports.size();
int totalPages = totalSize % m_pageSize == 0 ? (totalSize / m_pageSize) : (totalSize / m_pageSize + 1); int totalPages = totalSize % m_pageSize == 0 ? (totalSize / m_pageSize) : (totalSize / m_pageSize + 1);
// safe guarder for pageNum // safe guarder for pageNum
...@@ -248,7 +278,7 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -248,7 +278,7 @@ public class Handler implements PageHandler<Context>, LogEnabled {
int fromIndex = (payload.getPageNum() - 1) * m_pageSize; int fromIndex = (payload.getPageNum() - 1) * m_pageSize;
int toIndex = (fromIndex + m_pageSize) <= totalSize ? (fromIndex + m_pageSize) : totalSize; int toIndex = (fromIndex + m_pageSize) <= totalSize ? (fromIndex + m_pageSize) : totalSize;
for (int i = fromIndex; i < toIndex; i++) { for (int i = fromIndex; i < toIndex; i++) {
reports.add(new ABTestReport(entities.get(i), now)); reports.add(totalReports.get(i));
} }
model.setTotalPages(totalPages); model.setTotalPages(totalPages);
...@@ -258,7 +288,7 @@ public class Handler implements PageHandler<Context>, LogEnabled { ...@@ -258,7 +288,7 @@ public class Handler implements PageHandler<Context>, LogEnabled {
private List<GroupStrategy> getAllGroupStrategys() { private List<GroupStrategy> getAllGroupStrategys() {
try { try {
return m_groupStrategyDao.findAllGroupStrategy(GroupStrategyEntity.READSET_FULL); return m_groupStrategyDao.findAllByStatus(1, GroupStrategyEntity.READSET_FULL);
} catch (DalException e) { } catch (DalException e) {
m_logger.error(e.getMessage(), e); m_logger.error(e.getMessage(), e);
Cat.logError(e); Cat.logError(e);
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<entities> <entities>
<entity name="abtest" table="abtest" alias="a"> <entity name="abtest" table="abtest" alias="a">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" /> <member name="id" field="id" value-type="int" length="10" nullable="false" key="true" />
<member name="name" field="name" value-type="String" length="45" nullable="false" /> <member name="name" field="name" value-type="String" length="45" nullable="false" />
<member name="owner" field="owner" value-type="String" length="45" nullable="false" />
<member name="group-strategy" field="group_strategy" value-type="int" length="10" />
<member name="domains" field="domains" value-type="String" length="200" />
<member name="creation-date" field="creation_date" value-type="Date" />
<member name="modified-date" field="modified_date" value-type="Date" />
<member name="description" field="description" value-type="String" length="512" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>)
VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/>
SET <FIELDS/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/>
WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="abtest-run" table="abtest_run" alias="ar">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="case-id" field="case_id" value-type="int" length="10" nullable="false" />
<member name="start-date" field="start_date" value-type="Date" /> <member name="start-date" field="start_date" value-type="Date" />
<member name="end-date" field="end_date" value-type="Date" /> <member name="end-date" field="end_date" value-type="Date" />
<member name="disabled" field="disabled" value-type="int" length="3" nullable="false" /> <member name="disabled" field="disabled" value-type="int" length="3" nullable="false" />
<member name="domains" field="domains" value-type="String" length="100" nullable="false" /> <member name="domains" field="domains" value-type="String" length="100" nullable="false" />
<member name="strategy-id" field="strategy_id" value-type="int" length="10" nullable="false" /> <member name="strategy-configuration" field="strategy_configuration" value-type="String" length="1024" />
<member name="strategy-config" field="strategy_config" value-type="byte[]" length="65535" />
<member name="description" field="description" value-type="String" length="100" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" /> <member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="modify-date" field="modify_date" value-type="Date" /> <member name="modified-date" field="modified_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" /> <var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" /> <primary-key name="PRIMARY" members="id" />
<readsets> <readsets>
...@@ -44,11 +83,13 @@ ...@@ -44,11 +83,13 @@
</query> </query>
</query-defs> </query-defs>
</entity> </entity>
<entity name="group-strategy" table="groupStrategy" alias="g"> <entity name="group-strategy" table="group_strategy" alias="gs">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" /> <member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="name" field="name" value-type="String" length="45" nullable="false" /> <member name="name" field="name" value-type="String" length="45" nullable="false" />
<member name="alias" field="alias" value-type="String" length="45" nullable="false" /> <member name="alias" field="alias" value-type="String" length="45" nullable="false" />
<member name="class-name" field="className" value-type="String" length="45" nullable="false" /> <member name="classname" field="classname" value-type="String" length="45" nullable="false" />
<member name="configuration" field="configuration" value-type="String" length="512" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="description" field="description" value-type="String" length="45" /> <member name="description" field="description" value-type="String" length="45" />
<var name="key-id" value-type="int" key-member="id" /> <var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" /> <primary-key name="PRIMARY" members="id" />
......
...@@ -2,32 +2,50 @@ ...@@ -2,32 +2,50 @@
<entities do-package="com.dianping.cat.home.dal.abtest" gen="true"> <entities do-package="com.dianping.cat.home.dal.abtest" gen="true">
<entity name="abtest" table="abtest" alias="a"> <entity name="abtest" table="abtest" alias="a">
<member name="creation-date" insert-expr="NOW()" /> <member name="creation-date" insert-expr="NOW()" />
<member name="modify-date" insert-expr="NOW()" update-expr="NOW()" /> <member name="modified-date" insert-expr="NOW()" update-expr="NOW()" />
<query-defs>
<query name="find-all" type="SELECT" multiple="true">
<statement><![CDATA[
SELECT <FIELDS/>
FROM <TABLE/> ORDER BY <FIELD name='creation-date'/> DESC
]]></statement>
</query>
</query-defs>
</entity>
<entity name="abtest-run" table="abtest_run" alias="ar">
<member name="disabled" field="disabled" value-type="boolean" length="3" nullable="false" /> <member name="disabled" field="disabled" value-type="boolean" length="3" nullable="false" />
<member name="creation-date" insert-expr="NOW()" />
<member name="modified-date" insert-expr="NOW()" update-expr="NOW()" />
<updatesets> <updatesets>
<updateset name="DISABLE"> <updateset name="STATUS">
<member name="disabled" /> <member name="disabled" field="disabled" value-type="boolean" length="3" nullable="false" />
<member name="modify-date" /> <member name="modified-date" insert-expr="NOW()" update-expr="NOW()" />
</updateset> </updateset>
</updatesets> </updatesets>
<query-defs> <query-defs>
<query name="find-all-abtest" type="SELECT" multiple="true"> <query name="find-by-case-id" type="SELECT" multiple="true">
<param name="case-id" />
<statement><![CDATA[ <statement><![CDATA[
SELECT <FIELDS/> SELECT <FIELDS/>
FROM <TABLE/> ORDER BY <FIELD name='creation-date'/> DESC FROM <TABLE/>
WHERE <FIELD name='case-id'/> = ${case-id}
]]></statement> ]]></statement>
</query> </query>
</query-defs> </query-defs>
</entity> </entity>
<entity name="group-strategy" table="groupStrategy" alias="g">
<query-defs> <entity name="group-strategy" table="group_strategy" alias="gs">
<query name="find-all-groupStrategy" type="SELECT" multiple="true"> <query-defs>
<statement><![CDATA[ <query name="find-all-by-status" type="SELECT" multiple="true">
<param name="status" />
<statement><![CDATA[
SELECT <FIELDS/> SELECT <FIELDS/>
FROM <TABLE/> ORDER BY <FIELD name='id'/> FROM <TABLE/>
WHERE <FIELD name='status'/> = ${status}
]]></statement> ]]></statement>
</query> </query>
</query-defs> </query-defs>
</entity> </entity>
</entities> </entities>
...@@ -26,7 +26,8 @@ ...@@ -26,7 +26,8 @@
</group> </group>
<group name="abtest" package="com.dianping.cat.home.dal.abtest"> <group name="abtest" package="com.dianping.cat.home.dal.abtest">
<table name="abtest"/> <table name="abtest"/>
<table name="groupStrategy"/> <table name="abtest_run"/>
<table name="group_strategy"/>
</group> </group>
</jdbc> </jdbc>
<jdbc package="com.dainping.cat.home.dal" name="user"> <jdbc package="com.dainping.cat.home.dal" name="user">
......
...@@ -18,13 +18,7 @@ $(document) ...@@ -18,13 +18,7 @@ $(document)
var checkbox = $(".table input[type='checkbox']:checked"); var checkbox = $(".table input[type='checkbox']:checked");
var id = ""; var id = "";
for ( var i = 0; i < checkbox.length; i++) { for ( var i = 0; i < checkbox.length; i++) {
id = id id = id + $(":nth-child(2)",$(checkbox[i]).closest('tr')).html() + "-";
+ $(
":nth-child(2)",
$(checkbox[i])
.closest(
'tr'))
.html() + "-";
} }
url = window.location.href; url = window.location.href;
index = url.indexOf("&suspend"); index = url.indexOf("&suspend");
...@@ -33,7 +27,7 @@ $(document) ...@@ -33,7 +27,7 @@ $(document)
.substring(0, index) .substring(0, index)
+ "&suspend=-1&ids=" + id; + "&suspend=-1&ids=" + id;
} else { } else {
if(url.indexOf("?") == -1){ if (url.indexOf("?") == -1) {
url = url + '?'; url = url + '?';
} }
window.location.href = url window.location.href = url
...@@ -48,13 +42,7 @@ $(document) ...@@ -48,13 +42,7 @@ $(document)
var checkbox = $(".table input[type='checkbox']:checked"); var checkbox = $(".table input[type='checkbox']:checked");
var id = ""; var id = "";
for ( var i = 0; i < checkbox.length; i++) { for ( var i = 0; i < checkbox.length; i++) {
id = id id = id + $(":nth-child(2)",$(checkbox[i]).closest('tr')).html() + "-";
+ $(
":nth-child(2)",
$(checkbox[i])
.closest(
'tr'))
.html() + "-";
} }
url = window.location.href; url = window.location.href;
index = url.indexOf("&suspend"); index = url.indexOf("&suspend");
......
...@@ -170,7 +170,7 @@ ...@@ -170,7 +170,7 @@
<c:forEach var="item" items="${model.reports}"> <c:forEach var="item" items="${model.reports}">
<tr class="middle center rowlink"> <tr class="middle center rowlink">
<td class="nolink" style="padding-bottom: 8px"><input type="checkbox"/></td> <td class="nolink" style="padding-bottom: 8px"><input type="checkbox"/></td>
<td><a href="abtest?op=report&id=${item.entity.id}">${item.entity.id}</a></td> <td><a href="abtest?op=report&id=${item.run.id}">${item.run.id}</a></td>
<td>${item.entity.name}</td> <td>${item.entity.name}</td>
<td>1000</td> <td>1000</td>
<td>10%</td> <td>10%</td>
......
...@@ -245,29 +245,43 @@ CREATE TABLE `project` ( ...@@ -245,29 +245,43 @@ CREATE TABLE `project` (
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='项目基本信息'; )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='项目基本信息';
CREATE TABLE `groupStrategy` ( CREATE TABLE `abtest` (
`id` int(11) NOT NULL AUTO_INCREMENT, `id` int(11) NOT NULL COMMENT 'ID',
`name` varchar(45) NOT NULL COMMENT 'GroupStrategy的名字', `name` varchar(45) NOT NULL COMMENT '名字',
`alias` varchar(45) NOT NULL COMMENT 'GroupStrategy的英文名', `owner` varchar(45) NOT NULL COMMENT 'case的Owner',
`className` varchar(45) NOT NULL COMMENT 'GroupStrategy的class名字', `group_strategy` int(11) DEFAULT NULL COMMENT '分组策略ID',
`description` varchar(45) DEFAULT NULL, `domains` varchar(200) DEFAULT NULL COMMENT 'Domains,分号分割',
PRIMARY KEY (`id`) `creation_date` datetime DEFAULT NULL COMMENT '创建时间',
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ `modified_date` datetime DEFAULT NULL COMMENT '上次修改时间',
`description` varchar(512) DEFAULT NULL COMMENT '描述',
CREATE TABLE `abtest` ( PRIMARY KEY (`id`)
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', ) ENGINE=InnoDB DEFAULT CHARSET=utf8
`name` varchar(45) NOT NULL COMMENT 'abtest的名字',
`start_date` datetime DEFAULT NULL COMMENT '开始时间', CREATE TABLE `abtest_run` (
`end_date` datetime DEFAULT NULL COMMENT '结束时间', `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`disabled` tinyint(4) NOT NULL COMMENT '是否有效', `case_id` int(11) NOT NULL,
`domains` varchar(100) NOT NULL COMMENT '属于的domain,用分号分割', `start_date` datetime DEFAULT NULL COMMENT '开始时间',
`strategy_id` int(11) NOT NULL COMMENT '分组策略ID', `end_date` datetime DEFAULT NULL COMMENT '结束时间',
`strategy_config` blob COMMENT '策略配置', `disabled` tinyint(4) NOT NULL COMMENT '是否有效',
`description` varchar(100) DEFAULT NULL COMMENT '实验描述', `domains` varchar(100) NOT NULL COMMENT '属于的domain,用分号分割',
`creation_date` datetime NOT NULL COMMENT '创建时间', `strategy_configuration` varchar(1024) DEFAULT NULL COMMENT '策略配置',
`modify_date` datetime DEFAULT NULL COMMENT '修改时间', `creation_date` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) `modified_date` datetime NOT NULL COMMENT '上次修改时间',
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8$$ PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8
CREATE TABLE `group_strategy` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL COMMENT 'GroupStrategy的名字',
`alias` varchar(45) NOT NULL COMMENT 'GroupStrategy的英文名',
`classname` varchar(45) NOT NULL COMMENT 'GroupStrategy的class名字',
`configuration` varchar(512) DEFAULT NULL COMMENT '配置的schema',
`status` tinyint(4) NOT NULL COMMENT '是否开/关',
`description` varchar(45) DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册