package com.netflix.aegisthus.tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(DataProviderRunner.class)
public class AegisthusSerializerTest {
@Test
@Ignore
public void agent() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(AegisthusSerializerTest.class.getResourceAsStream("/agent.json")));
String line = null;
StringBuilder file = new StringBuilder();
while ((line = br.readLine()) != null) {
file.append(line);
}
new AegisthusSerializer().deserialize(file.toString());
}
@Test
@UseDataProvider("json")
public void deserializeExpire(String value) throws IOException {
Map<String, Object> map = new AegisthusSerializer().deserialize(value);
Assert.assertEquals(AegisthusSerializer.serialize(map), value);
}
@DataProvider
public static Object[][] json() {
return new Object[][] { { "{\"556e6b6e6f776e3a3738383838\": {\"deletedAt\": -9223372036854775808, \"columns\": [[\"ticketId\",\"d115046000bd11e1b27112313925158b\",1319735105450,\"e\",604800,1320339905]]}}" },
{ "{\"556e6b6e6f776e3a3738383838\": {\"deletedAt\": -9223372036854775808, \"columns\": [[\"\\\\N\",\"d115046000bd11e1b27112313925158b\",1319735105450,\"e\",604800,1320339905]]}}" },
{ "{\"556e6b6e6f776e3a3738383838\": {\"deletedAt\": -9223372036854775808, \"columns\": [[\"ticketId\",\"d115046000bd11e1b27112313925158b\",1319735105450,\"c\",604800]]}}" } };
}
private String s(Object obj) {
return obj.toString();
}
@SuppressWarnings("rawtypes")
@Test
public void serialize() throws IOException {
String value = "{\"uid\": {\"deletedAt\": 10, \"columns\": [[\"cell\",\"00000002\",1312400480243000], [\"enabled\",\"59\",1312400475129004], [\"newcolumn\",\"59\",1312400533649004]]}}";
Map<String, Object> map = new AegisthusSerializer().deserialize(value);
Assert.assertEquals(s(map.get(AegisthusSerializer.KEY)), "uid");
Assert.assertEquals(map.get(AegisthusSerializer.DELETEDAT), 10L);
Assert.assertEquals(s(((List) map.get("enabled")).get(1)), "59");
Assert.assertEquals(AegisthusSerializer.serialize(map), value);
}
@Test
@UseDataProvider("values")
public void serializeColumns(List<Object> values, String exp) {
Map<String, Object> map = Maps.newHashMap();
map.put(values.get(0).toString(), values);
StringBuilder sb = new StringBuilder();
AegisthusSerializer.serializeColumns(sb, map);
Assert.assertEquals(sb.toString(), exp);
}
@DataProvider
public static Object[][] values() {
Object[][] ret = new Object[2][2];
List<Object> values = Lists.newArrayList();
values.add("\\N");
values.add("");
values.add(1);
ret[0][0] = values;
ret[0][1] = "[\"\\\\N\",\"\",1]";
values = Lists.newArrayList();
values.add("\\\\N");
values.add("");
values.add(1);
ret[1][0] = values;
ret[1][1] = "[\"\\\\\\\\N\",\"\",1]";
return ret;
}
}