package net.ion.craken.node.tlog; import java.io.InputStream; import net.ion.craken.node.ReadNode; import net.ion.craken.node.TransactionJob; import net.ion.craken.node.WriteSession; import net.ion.craken.node.crud.TestBaseCrud; import net.ion.craken.node.crud.tree.Fqn; import net.ion.craken.util.StringInputStream; import net.ion.framework.parse.gson.JsonArray; import net.ion.framework.parse.gson.JsonElement; import net.ion.framework.parse.gson.JsonObject; import net.ion.framework.util.Debug; import net.ion.framework.util.IOUtil; public class TestSaveLog extends TestBaseCrud { public void testRun() throws Exception { session.tranSync(new TransactionJob<Void>() { @Override public Void handle(WriteSession wsession) throws Exception { wsession.tranId("12345") ; wsession.createBy("/bleujin").property("name", "bleujin") ; wsession.pathBy("/bleujin").property("name", "hero").property("age", 20).blob("blob", new StringInputStream("Long Long String")) ; return null; } }) ; final ReadNode readNode = session.pathBy("/bleujin"); assertEquals("hero", readNode.property("name").stringValue()) ; readNode.toRows("name, age, blob").debugPrint() ; InputStream input = readNode.property("blob").asBlob().toInputStream(); Debug.line(IOUtil.toStringWithClose(input)) ; session.pathBy(Fqn.TRANSACTIONS.toString() + "/12345").toRows("time, config").debugPrint() ; ReadNode logNode = session.ghostBy(Fqn.TRANSACTIONS.toString() + "/12345"); InputStream tranInput = logNode.property("tran").asBlob().toInputStream(); JsonObject json = JsonObject.fromString(IOUtil.toStringWithClose(tranInput)); assertEquals(true, json.asLong("time") > 0 ) ; JsonArray logs = json.asJsonArray("logs"); for (JsonElement log : logs) { assertEquals("/bleujin", log.getAsJsonObject().asString("path")) ; } // Debug.line(IOUtil.toStringWithClose(tranInput)) ; } }