import org.vertx.java.core.json.JsonObject; //导入方法依赖的package包/类
@Test
public void testBuiltin() throws Exception {
Variables vars = createVariables();
JsonObject config = new JsonObject("{"
+ " \"Rule1\": \"%{#node}\","
+ " \"Rule2\": \"%{#cluster}\","
+ " \"Rule3\": \"%{#chain}\","
+ " \"Rule4\": \"%{#host}\","
+ " \"Rule5\": \"%{#date}\","
+ " \"Rule6\": \"%{#timestamp}\","
+ " \"Rule7\": \"%{#now}\","
+ " \"Rule8\": \"%{#sensor.cpu.load}\","
+ " \"Rule9\": \"%{#prop.java.home}\","
+ " \"Rule10\": \"%{#spikex.home}\","
+ " \"Rule11\": \"%{#spikex.conf}\","
+ " \"Rule12\": \"%{#spikex.data}\","
+ " \"Rule13\": \"%{#spikex.tmp}\","
+ " \"Rule14\": \"%{#+YYYY-MM-dd}\","
+ " \"Rule15\": \"file:%{#spikex.data}/notifications\","
+ " \"Rule16\": \"%{#now(UTC,-1m)}\"," // UTC is set just for testing parsing...
+ " \"Rule17\": \"%{#now(5h)}\""
+ " }");
Map rules = config.toMap();
Object r1 = vars.translate(rules.get("Rule1"));
Assert.assertEquals("NodeName", r1);
Object r2 = vars.translate(rules.get("Rule2"));
Assert.assertEquals("ClusterName", r2);
String r4 = vars.translate(rules.get("Rule4"));
Assert.assertTrue(r4.length() > 0);
String r5 = vars.translate(rules.get("Rule5"));
Assert.assertTrue(r5.length() > 0);
Long r7 = vars.translate(rules.get("Rule7"));
Assert.assertTrue(r7 <= System.currentTimeMillis());
String r8 = vars.translate(rules.get("Rule8"));
Assert.assertEquals("%{#sensor.cpu.load}", r8);
String r10 = vars.translate(rules.get("Rule10"));
Assert.assertEquals("HomePath", r10);
String r11 = vars.translate(rules.get("Rule11"));
Assert.assertEquals("ConfPath", r11);
String r12 = vars.translate(rules.get("Rule12"));
Assert.assertEquals("DatPath", r12);
String r13 = vars.translate(rules.get("Rule13"));
Assert.assertEquals("TmpPath", r13);
String r14 = vars.translate(rules.get("Rule14"));
Assert.assertTrue(r14.length() == 10);
String r15 = vars.translate(rules.get("Rule15"));
Assert.assertEquals("file:DatPath/notifications", r15);
Long r16 = vars.translate(rules.get("Rule16"));
DateTime dt16 = new DateTime(r16,DateTimeZone.UTC); // Millis is not related to any timezone
DateTime dt = DateTime.now(DateTimeZone.UTC);
dt = dt.minusMinutes(1);
DateTimeFormatter formatter = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm");
System.out.println("Expected: " + formatter.print(dt) + " dt16: " + formatter.print(dt16));
Assert.assertEquals(formatter.print(dt), formatter.print(dt16));
Long r17 = vars.translate(rules.get("Rule17"));
DateTime dt17 = new DateTime(r17);
dt = DateTime.now();
dt = dt.plusHours(5);
System.out.println("Expected: " + formatter.print(dt) + " dt17: " + formatter.print(dt17));
Assert.assertEquals(formatter.print(dt), formatter.print(dt17));
}