提交 af2f9c9d 编写于 作者: Y yong.you

fix abtest name problem

上级 361bc544
......@@ -131,10 +131,13 @@ public class DefaultABTestCodec implements ABTestCodec {
sb.append('|');
}
if(e.getValue() == null){
sb.append(e.getKey()).append(':');
String key = e.getKey();
String value = e.getValue();
if(value == null){
sb.append(key).append(':');
}else{
sb.append(e.getKey()).append(':').append(e.getValue());
sb.append(key).append(':').append(value);
}
}
}
......@@ -152,8 +155,10 @@ public class DefaultABTestCodec implements ABTestCodec {
for (Entry<String, Map<String, String>> entry : maps.entrySet()) {
String key = entry.getKey();
if (entry.getValue() != null) {
String val = entry.getValue().get("ab");
Map<String, String> entryValue = entry.getValue();
if (entryValue != null) {
String val = entryValue.get("ab");
if (val != null) {
code.put(key, val);
......
......@@ -17,7 +17,7 @@ import com.dianping.cat.abtest.spi.internal.DefaultABTestEntityManager;
import com.dianping.cat.configuration.ClientConfigManager;
import com.dianping.cat.message.spi.MessageManager;
class ABTestComponentConfigurator extends AbstractResourceConfigurator {
public class ABTestComponentConfigurator extends AbstractResourceConfigurator {
@Override
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
......
......@@ -33,7 +33,7 @@ public class StatusUpdateTask implements Task, Initializable {
private long m_interval = 60 * 1000; // 60 seconds
private String m_jar;
private String m_jars;
@Override
public String getName() {
......@@ -45,34 +45,36 @@ public class StatusUpdateTask implements Task, Initializable {
m_ipAddress = NetworkInterfaceManager.INSTANCE.getLocalHostAddress();
}
private void buildClasspath() {
ClassLoader loader = StatusUpdateTask.class.getClassLoader();
StringBuilder sb = new StringBuilder();
private void buildClasspath(ClassLoader loader, StringBuilder sb) {
if (loader instanceof URLClassLoader) {
URL[] urLs = ((URLClassLoader) loader).getURLs();
boolean first = true;
for (URL url : urLs) {
String jar = parseJar(url.toExternalForm());
if (jar != null) {
if (first) {
sb.append(jar);
first = false;
} else {
sb.append(',').append(jar);
}
sb.append(jar).append(',');
}
}
ClassLoader parent = loader.getParent();
buildClasspath(parent, sb);
}
}
private void buildClasspath() {
ClassLoader loader = StatusUpdateTask.class.getClassLoader();
StringBuilder sb = new StringBuilder();
buildClasspath(loader, sb);
if (sb.length() > 0) {
m_jars = sb.substring(0, sb.length() - 1);
}
m_jar = sb.toString();
}
private String parseJar(String path) {
if (path.endsWith(".jar")) {
int index = path.lastIndexOf('/');
if (index > -1) {
return path.substring(index + 1);
}
......@@ -108,7 +110,7 @@ public class StatusUpdateTask implements Task, Initializable {
while (m_active) {
long start = MilliSecondTimer.currentTimeMillis();
if (m_manager.isCatEnabled()) {
Transaction t = cat.newTransaction("System", "Status");
Heartbeat h = cat.newHeartbeat("Heartbeat", m_ipAddress);
......@@ -116,7 +118,7 @@ public class StatusUpdateTask implements Task, Initializable {
t.addData("dumpLocked", m_manager.isDumpLocked());
try {
StatusInfoCollector statusInfoCollector = new StatusInfoCollector(m_statistics, m_jar);
StatusInfoCollector statusInfoCollector = new StatusInfoCollector(m_statistics, m_jars);
status.accept(statusInfoCollector.setDumpLocked(m_manager.isDumpLocked()));
h.addData(status.toString());
......
package com.dianping.cat.abtest.tester;
import java.util.ArrayList;
import java.util.List;
import org.unidal.lookup.configuration.AbstractResourceConfigurator;
import org.unidal.lookup.configuration.Component;
import com.dianping.cat.abtest.spi.ABTestGroupStrategy;
public class ABTestServerConfigurator extends AbstractResourceConfigurator {
@Override
public List<Component> defineComponents() {
List<Component> all = new ArrayList<Component>();
all.add(C(ABTestGroupStrategy.class, RetinaImgGroupStrategy.ID, RetinaImgGroupStrategy.class)
.is(PER_LOOKUP));
return all;
}
@Override
protected Class<?> getTestClass() {
return RetinaImgGroupStrategy.class;
}
public static void main(String[] args) {
generatePlexusComponentsXmlFile(new ABTestServerConfigurator());
}
}
......@@ -17,12 +17,12 @@ import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig;
import com.dianping.cat.consumer.advanced.MetricConfigManager;
import com.dianping.cat.consumer.core.ProductLineConfigManager;
import com.dianping.cat.consumer.metric.model.entity.MetricReport;
import com.dianping.cat.home.dal.abtest.AbtestDao;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.PayloadNormalizer;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.system.page.abtest.service.ABTestService;
public class Handler implements PageHandler<Context> {
@Inject
......@@ -41,7 +41,7 @@ public class Handler implements PageHandler<Context> {
private ProductLineConfigManager m_productLineConfigManager;
@Inject
private AbtestDao m_abtestDao;
private ABTestService m_abtestService;
private static final String TUAN = "TuanGou";
......@@ -88,7 +88,7 @@ public class Handler implements PageHandler<Context> {
MetricDisplay display = new MetricDisplay(domainSet,
test, startTime);
display.setAbtest(m_abtestDao);
display.setAbtest(m_abtestService);
display.visitMetricReport(report);
model.setDisplay(display);
......
......@@ -8,9 +8,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.unidal.dal.jdbc.DalException;
import com.dianping.cat.Cat;
import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig;
import com.dianping.cat.consumer.metric.model.entity.Abtest;
import com.dianping.cat.consumer.metric.model.entity.Group;
......@@ -20,9 +17,8 @@ import com.dianping.cat.consumer.metric.model.entity.Point;
import com.dianping.cat.consumer.metric.model.transform.BaseVisitor;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.home.dal.abtest.AbtestDao;
import com.dianping.cat.home.dal.abtest.AbtestEntity;
import com.dianping.cat.report.page.LineChart;
import com.dianping.cat.system.page.abtest.service.ABTestService;
public class MetricDisplay extends BaseVisitor {
......@@ -38,7 +34,7 @@ public class MetricDisplay extends BaseVisitor {
private String m_currentComputeType;
private AbtestDao m_abtestDao;
private ABTestService m_abtestService;
private static final String SUM = CatString.SUM;
......@@ -177,21 +173,21 @@ public class MetricDisplay extends BaseVisitor {
super.visitMetricReport(metricReport);
}
public void setAbtest(AbtestDao abtestDao) {
m_abtestDao = abtestDao;
public void setAbtest(ABTestService service) {
m_abtestService = service;
}
private com.dianping.cat.home.dal.abtest.Abtest findAbTest(int id) {
try {
return m_abtestDao.findByPK(id, AbtestEntity.READSET_FULL);
} catch (DalException e) {
Cat.logError(e);
com.dianping.cat.home.dal.abtest.Abtest abtest = new com.dianping.cat.home.dal.abtest.Abtest();
com.dianping.cat.home.dal.abtest.Abtest abtest = m_abtestService.getABTestNameByRunId(id);
if (abtest == null) {
abtest = new com.dianping.cat.home.dal.abtest.Abtest();
abtest.setId(id);
abtest.setName(String.valueOf(id));
return abtest;
}
return abtest;
}
}
package com.dianping.cat.system.page.abtest.service;
import com.dianping.cat.home.dal.abtest.Abtest;
public interface ABTestService {
public String getABTestNameByRunId(int id);
public Abtest getABTestNameByRunId(int id);
}
......@@ -22,11 +22,11 @@ public class ABTestServiceImpl implements ABTestService {
@Inject
private AbtestRunDao m_abtestRunDao;
private Map<Integer, String> m_abtestMap = new ConcurrentHashMap<Integer, String>();
private Map<Integer, Abtest> m_abtestMap = new ConcurrentHashMap<Integer, Abtest>();
@Override
public String getABTestNameByRunId(int id) {
String name = m_abtestMap.get(id);
public Abtest getABTestNameByRunId(int id) {
Abtest name = m_abtestMap.get(id);
if (name != null) {
return name;
......@@ -35,13 +35,12 @@ public class ABTestServiceImpl implements ABTestService {
AbtestRun run = m_abtestRunDao.findByPK(id, AbtestRunEntity.READSET_FULL);
Abtest abtest = m_abtestDao.findByPK(run.getCaseId(), AbtestEntity.READSET_FULL);
name = abtest.getName();
m_abtestMap.put(id, name);
m_abtestMap.put(id, abtest);
} catch (DalException e) {
Cat.logError(e);
}
}
return name;
return null;
}
}
......@@ -1649,14 +1649,42 @@
</requirements>
</component>
<component>
<role>com.dianping.cat.system.page.abtest.service.ABTestService</role>
<implementation>com.dianping.cat.system.page.abtest.service.ABTestServiceImpl</implementation>
<role>com.dianping.cat.abtest.spi.internal.ABTestContextManager</role>
<implementation>com.dianping.cat.abtest.spi.internal.DefaultABTestContextManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.home.dal.abtest.AbtestDao</role>
<role>com.dianping.cat.abtest.spi.internal.ABTestEntityManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.abtest.AbtestRunDao</role>
<role>com.dianping.cat.message.spi.MessageManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.abtest.spi.internal.ABTestCodec</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.abtest.spi.internal.ABTestCodec</role>
<implementation>com.dianping.cat.abtest.spi.internal.DefaultABTestCodec</implementation>
</component>
<component>
<role>com.dianping.cat.abtest.repository.ABTestEntityRepository</role>
<implementation>com.dianping.cat.abtest.repository.HttpABTestEntityRepository</implementation>
<configuration>
<refreshTimeInSeconds>60</refreshTimeInSeconds>
</configuration>
<requirements>
<requirement>
<role>com.dianping.cat.configuration.ClientConfigManager</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.abtest.spi.internal.ABTestEntityManager</role>
<implementation>com.dianping.cat.abtest.spi.internal.DefaultABTestEntityManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.abtest.repository.ABTestEntityRepository</role>
</requirement>
</requirements>
</component>
......@@ -2596,7 +2624,7 @@
<role>com.dianping.cat.consumer.core.ProductLineConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.home.dal.abtest.AbtestDao</role>
<role>com.dianping.cat.system.page.abtest.service.ABTestService</role>
</requirement>
</requirements>
</component>
......@@ -2627,15 +2655,6 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.abtest.AbtestDao</role>
<implementation>com.dianping.cat.home.dal.abtest.AbtestDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.jsError.Handler</role>
<implementation>com.dianping.cat.report.page.jsError.Handler</implementation>
......@@ -3098,6 +3117,15 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.abtest.AbtestDao</role>
<implementation>com.dianping.cat.home.dal.abtest.AbtestDao</implementation>
<requirements>
<requirement>
<role>org.unidal.dal.jdbc.QueryEngine</role>
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.home.dal.abtest.AbtestRunDao</role>
<implementation>com.dianping.cat.home.dal.abtest.AbtestRunDao</implementation>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册