Skip to content

Commit 2c121f5

Browse files
committed
[working copy]
1 parent f72b2a3 commit 2c121f5

File tree

6 files changed

+137
-22
lines changed

6 files changed

+137
-22
lines changed

pulse.sample.bizcounter/java-sample/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@
3535
<artifactId>okhttp</artifactId>
3636
<version>2.7.5</version>
3737
</dependency>
38+
<dependency>
39+
<groupId>commons-cli</groupId>
40+
<artifactId>commons-cli</artifactId>
41+
<version>1.2</version>
42+
</dependency>
3843
<dependency>
3944
<groupId>org.projectlombok</groupId>
4045
<artifactId>lombok</artifactId>

pulse.sample.bizcounter/java-sample/pulse.sample.bizcounter.iml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
<orderEntry type="sourceFolder" forTests="false" />
1414
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.1.0" level="project" />
1515
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.3.0" level="project" />
16-
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.6.0" level="project" />
1716
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-gson:2.1.0" level="project" />
1817
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.6.2" level="project" />
1918
<orderEntry type="library" name="Maven: com.squareup.okhttp:okhttp:2.7.5" level="project" />
19+
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.6.0" level="project" />
20+
<orderEntry type="library" name="Maven: commons-cli:commons-cli:1.2" level="project" />
2021
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.16.10" level="project" />
2122
</component>
2223
</module>

pulse.sample.bizcounter/java-sample/src/main/java/scouterx/pulse/http/HttpTrain.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import retrofit2.converter.gson.GsonConverterFactory;
55
import scouterx.pulse.protocol.counter.ObjectCounterBean;
66
import scouterx.pulse.protocol.register.RegisterBean;
7+
import scouterx.pulse.sample.bizcounter.App;
78

89
import java.util.List;
910
import java.util.concurrent.BlockingQueue;
@@ -29,16 +30,16 @@ class Bucket {
2930

3031
static BlockingQueue<Bucket> queue = new LinkedBlockingDeque<>(100);
3132

32-
//TODO 어찌 초기화 할까??
33-
static Retrofit retrofit = new Retrofit.Builder()
34-
.baseUrl("https://api.github.com/")
35-
.addConverterFactory(GsonConverterFactory.create())
36-
.build();
33+
static Retrofit retrofit = null;
3734

3835
private static HttpTrain instance = null;
3936

4037
public final static synchronized HttpTrain getInstance() {
4138
if (instance == null) {
39+
retrofit =new Retrofit.Builder()
40+
.baseUrl(App.targetAddress)
41+
.addConverterFactory(GsonConverterFactory.create())
42+
.build();
4243
instance = new HttpTrain();
4344
instance.setDaemon(true);
4445
instance.setName(instance.getClass().getName());
@@ -75,10 +76,12 @@ public boolean putRegisterBean(RegisterBean bean) {
7576
}
7677

7778
public boolean putObjectCounterBeans(ObjectCounterBean[] beans) {
79+
if(beans == null || beans.length == 0) return true;
7880
return queue.offer(new Bucket(TYPE_COUNTER_ARRAY, beans));
7981
}
8082

8183
public boolean putObjectCounterBeans(List<ObjectCounterBean> beans) {
84+
if(beans == null || beans.size() == 0) return true;
8285
return queue.offer(new Bucket(TYPE_COUNTER_LIST, beans));
8386
}
8487

pulse.sample.bizcounter/java-sample/src/main/java/scouterx/pulse/sample/bizcounter/App.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,37 @@
11
package scouterx.pulse.sample.bizcounter;
22

3+
import org.apache.commons.cli.*;
4+
35
/**
46
* @author Gun Lee (gunlee01@gmail.com) on 2016. 7. 30.
57
*/
68
public class App {
9+
public static String targetAddress = null;
10+
711
public static void main(String[] args) {
12+
Options options = new Options();
13+
14+
Option address = new Option("t", "target", true, "target address, default => http://localhost:6180/");
15+
address.setRequired(false);
16+
options.addOption(address);
17+
18+
CommandLineParser parser = new BasicParser();
19+
HelpFormatter formatter = new HelpFormatter();
20+
CommandLine cmd;
21+
22+
formatter.printHelp("options", options);
23+
24+
try{
25+
cmd = parser.parse(options, args);
26+
} catch(ParseException e) {
27+
System.out.println(e.getMessage());
28+
System.exit(1);
29+
return;
30+
}
31+
32+
App.targetAddress = cmd.getOptionValue("target", "http://localhost:6180/");
833

9-
BizSampleAgent agent = new BizSampleAgent();
10-
agent.start();
34+
BizSampleAgent.getInstance().start();
1135

1236
while(true) {
1337
try {
Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,73 @@
11
package scouterx.pulse.sample.bizcounter;
22

3+
import scouterx.pulse.protocol.counter.CounterValue;
34
import scouterx.pulse.protocol.counter.ObjectCounterBean;
4-
import scouterx.pulse.protocol.register.RegisterBean;
5+
import scouterx.pulse.protocol.counter.ObjectValue;
6+
7+
import java.util.ArrayList;
8+
import java.util.HashMap;
9+
import java.util.List;
10+
import java.util.Map;
511

612
/**
713
* @author Gun Lee (gunlee01@gmail.com) on 2016. 7. 30.
814
*/
915
public class BizDataController {
10-
public static RegisterBean getBizSpecBean() {
11-
return null;
16+
private static Map<String, Float> prev = new HashMap<>();
17+
18+
static {
19+
prev.put("ops1", 100f);
20+
prev.put("ops2", 200f);
21+
prev.put("ops3", 300f);
22+
prev.put("ops4", 400f);
23+
prev.put("ops5", 500f);
24+
25+
prev.put("onairopm", 700f);
26+
prev.put("onairapm", 200f);
27+
prev.put("onaircpm", 34.5f);
28+
}
29+
30+
public List<ObjectCounterBean> getRealtimeOrderInfoAsObjectCounterBean() {
31+
List<ObjectCounterBean> list = new ArrayList<>();
32+
33+
list.add(new ObjectCounterBean.Builder()
34+
.setObject(new ObjectValue("product-info", "prod-1001", BizSampleAgent.OBJECT_TYPE, "noaddress"))
35+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_OPM, getRandomSample("ops1")))
36+
.build());
37+
list.add(new ObjectCounterBean.Builder()
38+
.setObject(new ObjectValue("product-info", "prod-1021", BizSampleAgent.OBJECT_TYPE, "noaddress"))
39+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_OPM, getRandomSample("ops2")))
40+
.build());
41+
list.add(new ObjectCounterBean.Builder()
42+
.setObject(new ObjectValue("product-info", "prod-1139", BizSampleAgent.OBJECT_TYPE, "noaddress"))
43+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_OPM, getRandomSample("ops3")))
44+
.build());
45+
list.add(new ObjectCounterBean.Builder()
46+
.setObject(new ObjectValue("product-info", "prod-1240", BizSampleAgent.OBJECT_TYPE, "noaddress"))
47+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_OPM, getRandomSample("ops4")))
48+
.build());
49+
50+
list.add(new ObjectCounterBean.Builder()
51+
.setObject(new ObjectValue("onair-info", "onair", BizSampleAgent.OBJECT_TYPE, "noaddress"))
52+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_ONAIROPM, getRandomSample("onairopm")))
53+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_ONAIRAPM, getRandomSample("onairapm")))
54+
.addCounterValue(new CounterValue(BizSampleAgent.COUNTER_ONAIROSR, getRandomSample("onaircpm")))
55+
.build());
56+
57+
return list;
1258
}
1359

14-
public static ObjectCounterBean getObjectCounterBean() {
15-
return null;
60+
private float getRandomSample(String type) {
61+
Float value = prev.get(type);
62+
if (value == null) {
63+
value = 10.0f;
64+
prev.put(type, value);
65+
}
66+
67+
value = value + ((float) Math.random() - 0.5f) * value / 30;
68+
69+
return value;
1670
}
71+
72+
1773
}

pulse.sample.bizcounter/java-sample/src/main/java/scouterx/pulse/sample/bizcounter/BizSampleAgent.java

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package scouterx.pulse.sample.bizcounter;
22

3-
import retrofit2.Retrofit;
4-
import retrofit2.converter.gson.GsonConverterFactory;
3+
import scouterx.pulse.http.HttpTrain;
4+
import scouterx.pulse.protocol.register.CounterDef;
5+
import scouterx.pulse.protocol.register.ObjectDef;
6+
import scouterx.pulse.protocol.register.RegisterBean;
57

68
import java.util.concurrent.Executors;
79
import java.util.concurrent.ScheduledExecutorService;
@@ -11,7 +13,20 @@
1113
* @author Gun Lee (gunlee01@gmail.com) on 2016. 7. 30.
1214
*/
1315
public class BizSampleAgent {
14-
private static Retrofit retrofit = null;
16+
public static final String OBJECT_TYPE = "scouterbizsample1";
17+
public static final String COUNTER_OPM = "OPM";
18+
public static final String COUNTER_DAYORDER = "DayOrder";
19+
public static final String COUNTER_ONAIROPM = "OnAirOPM";
20+
public static final String COUNTER_ONAIRAPM = "OnAirAPM";
21+
public static final String COUNTER_ONAIROSR = "OnAirOSR";
22+
23+
static BizSampleAgent instance = new BizSampleAgent();
24+
25+
private BizSampleAgent() {}
26+
27+
public static BizSampleAgent getInstance() {
28+
return instance;
29+
}
1530

1631
private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(
1732
(r) -> {
@@ -22,19 +37,30 @@ public class BizSampleAgent {
2237
);
2338

2439
public void start() {
25-
if(retrofit == null) {
26-
retrofit = new Retrofit.Builder()
27-
.baseUrl("http://127.0.0.1:6180")
28-
.addConverterFactory(GsonConverterFactory.create())
40+
executor.scheduleAtFixedRate(new RegisterTask(), 500, 5*60*1000, TimeUnit.MILLISECONDS);
41+
executor.scheduleAtFixedRate(new BizSendTask(), 4000, 2000, TimeUnit.MILLISECONDS);
42+
}
43+
44+
private class RegisterTask implements Runnable {
45+
@Override
46+
public void run() {
47+
RegisterBean rbean = new RegisterBean.Builder()
48+
.setObjectSpec(new ObjectDef(OBJECT_TYPE, "Biz Sample 1"))
49+
.addCounterSpec(new CounterDef(COUNTER_OPM, "o/m", "order/minute", true, true))
50+
.addCounterSpec(new CounterDef(COUNTER_DAYORDER, "ea", "Daily Order Count", true, true))
51+
.addCounterSpec(new CounterDef(COUNTER_ONAIROPM, "o/m", "On Air order/minute", true, true))
52+
.addCounterSpec(new CounterDef(COUNTER_ONAIRAPM, "o/m", "On Air abandon/minute", true, true))
53+
.addCounterSpec(new CounterDef(COUNTER_ONAIROSR, "%", "On Air order success rate", true, true))
2954
.build();
55+
56+
HttpTrain.getInstance().putRegisterBean(rbean);
3057
}
31-
executor.scheduleAtFixedRate(new BizSendTask(), 2000, 2000, TimeUnit.MILLISECONDS);
3258
}
3359

3460
private class BizSendTask implements Runnable {
3561
@Override
3662
public void run() {
37-
System.out.println("gogogo");
63+
HttpTrain.getInstance().putObjectCounterBeans(new BizDataController().getRealtimeOrderInfoAsObjectCounterBean());
3864
}
3965
}
4066

0 commit comments

Comments
 (0)