package com.tinkerpop.rexster.protocol.msg; import com.tinkerpop.rexster.client.RexProException; import com.tinkerpop.rexster.protocol.serializer.msgpack.templates.MetaTemplate; import com.tinkerpop.rexster.protocol.serializer.msgpack.templates.ResultsTemplate; import junit.framework.Assert; import org.junit.Test; import org.msgpack.MessagePack; import org.msgpack.packer.Packer; import org.msgpack.unpacker.Unpacker; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.UUID; /** * @author Stephen Mallette (http://stephen.genoprime.com) */ public class ScriptRequestMessageTest { @Test public void testMetaValidation() { final ScriptRequestMessage msg = new ScriptRequestMessage(); msg.setRequestAsUUID(UUID.randomUUID()); msg.setSessionAsUUID(UUID.randomUUID()); msg.LanguageName = "groovy"; msg.Script = "script"; //these should work try { msg.metaSetInSession(true); msg.validateMetaData(); msg.metaSetInSession(false); msg.validateMetaData(); } catch (RexProException ex) { Assert.fail(); } //these should fail try { msg.Meta.put(ScriptRequestMessage.META_KEY_IN_SESSION, 5); msg.validateMetaData(); Assert.fail(); } catch (RexProException ex) { //exception is expected } //these should fail try { msg.Meta.put(ScriptRequestMessage.META_KEY_IN_SESSION, "yup"); msg.validateMetaData(); Assert.fail(); } catch (RexProException ex) { //exception is expected } } @Test public void testSerialization() { MessagePack msgpack = new MessagePack(); msgpack.register(RexProMessageMeta.class, MetaTemplate.getInstance()); msgpack.register(RexProBindings.class, RexProBindings.SerializationTemplate.getInstance()); msgpack.register(RexProScriptResult.class, ResultsTemplate.getInstance()); final ScriptRequestMessage outMsg = new ScriptRequestMessage(); outMsg.setRequestAsUUID(UUID.randomUUID()); outMsg.setSessionAsUUID(UUID.randomUUID()); outMsg.LanguageName = "groovy"; outMsg.Script = "script"; final ByteArrayOutputStream outStream = new ByteArrayOutputStream(); final Packer packer = msgpack.createPacker(outStream); try { packer.write(outMsg); packer.close(); } catch (IOException ex) { Assert.fail(); } byte[] bytes = outStream.toByteArray(); final ByteArrayInputStream in = new ByteArrayInputStream(bytes); final Unpacker unpacker = msgpack.createUnpacker(in); ScriptRequestMessage inMsg; try { inMsg = unpacker.read(ScriptRequestMessage.class); Assert.assertEquals(outMsg.Meta, inMsg.Meta); Assert.assertEquals(UUID.nameUUIDFromBytes(outMsg.Request), UUID.nameUUIDFromBytes(inMsg.Request)); Assert.assertEquals(UUID.nameUUIDFromBytes(outMsg.Session), UUID.nameUUIDFromBytes(inMsg.Session)); Assert.assertEquals(outMsg.LanguageName, inMsg.LanguageName); Assert.assertEquals(outMsg.Script, inMsg.Script); } catch (IOException ex) { Assert.fail(); } } }