]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java
6405ca7bba7daf25c792567a2e40437b40d0fdf1
[gpl/argeo-slc.git] / org.argeo.slc.core / src / test / java / org / argeo / slc / core / process / SlcExecutionCastorTest.java
1 package org.argeo.slc.core.process;
2
3 import java.io.IOException;
4 import java.io.StringReader;
5 import java.io.StringWriter;
6 import java.text.SimpleDateFormat;
7 import java.util.UUID;
8
9 import javax.xml.transform.stream.StreamResult;
10 import javax.xml.transform.stream.StreamSource;
11
12 import org.apache.commons.io.IOUtils;
13 import org.apache.commons.logging.Log;
14 import org.apache.commons.logging.LogFactory;
15 import org.argeo.slc.msg.process.SlcExecutionRequest;
16 import org.argeo.slc.msg.process.SlcExecutionStepsRequest;
17 import org.argeo.slc.unit.AbstractSpringTestCase;
18 import org.springframework.oxm.Marshaller;
19 import org.springframework.oxm.Unmarshaller;
20
21 public class SlcExecutionCastorTest extends AbstractSpringTestCase {
22 private Log log = LogFactory.getLog(getClass());
23
24 public void testMarshalling() throws Exception {
25 Marshaller marshaller = getBean("marshaller");
26 Unmarshaller unmarshaller = getBean("marshaller");
27
28 SlcExecution slcExec = createSimpleSlcExecution();
29
30 SlcExecutionRequest msgSave = new SlcExecutionRequest();
31 msgSave.setSlcExecution(slcExec);
32
33 String msgSaveXml = marshallAndLog(marshaller, msgSave);
34
35 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
36 SlcExecutionStep step0 = new SlcExecutionStep();
37 step0.setBegin(sdf.parse("2008-04-17 18:21"));
38 step0.setType("LOG");
39 step0.addLog("A log message\nand another line");
40
41 SlcExecutionStep step1 = new SlcExecutionStep();
42 step1.setBegin(sdf.parse("2008-04-17 18:25"));
43 step1.setType("LOG");
44 step1.addLog("A nother log message");
45
46 SlcExecutionStepsRequest msgNotif = new SlcExecutionStepsRequest();
47 msgNotif.addStep(step0);
48 msgNotif.addStep(step1);
49 msgNotif.setSlcExecutionUuid(slcExec.getUuid());
50
51 String msgNotifXml = marshallAndLog(marshaller, msgNotif);
52
53 SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml);
54 assertNotNull(msgSaveUnm);
55 assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution());
56
57 SlcExecutionStepsRequest msgNotifUnm = unmarshall(unmarshaller,
58 msgNotifXml);
59 assertNotNull(msgNotifUnm);
60 assertEquals(slcExec.getUuid(), msgNotifUnm.getSlcExecutionUuid());
61 assertEquals(2, msgNotifUnm.getSteps().size());
62 assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0));
63 assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1));
64
65 SlcExecution slcExecUnm = msgSaveUnm.getSlcExecution();
66 slcExecUnm.getSteps().addAll(msgNotifUnm.getSteps());
67
68 SlcExecutionRequest msgUpdate = new SlcExecutionRequest();
69 msgUpdate.setSlcExecution(slcExecUnm);
70 String msgUpdateXml = marshallAndLog(marshaller, msgUpdate);
71 }
72
73 private String marshallAndLog(Marshaller marshaller, Object obj)
74 throws IOException {
75 StringWriter writer = new StringWriter();
76 marshaller.marshal(obj, new StreamResult(writer));
77 String xml = writer.toString();
78 log.info(xml);
79 IOUtils.closeQuietly(writer);
80 return xml;
81 }
82
83 private <T> T unmarshall(Unmarshaller unmarshaller, String xml)
84 throws IOException {
85 StringReader reader = new StringReader(xml);
86 Object obj = unmarshaller.unmarshal(new StreamSource(reader));
87 IOUtils.closeQuietly(reader);
88 return (T) obj;
89 }
90
91 private void assertSlcExecution(SlcExecution expected, SlcExecution reached) {
92 assertNotNull(reached);
93 assertEquals(expected.getHost(), reached.getHost());
94 assertEquals(expected.getPath(), reached.getPath());
95 assertEquals(expected.getType(), reached.getType());
96 assertEquals(expected.getStatus(), reached.getStatus());
97 }
98
99 private void assertSlcExecutionStep(SlcExecutionStep expected,
100 SlcExecutionStep reached) {
101 assertNotNull(reached);
102 assertEquals(expected.getType(), reached.getType());
103 assertEquals(expected.logAsString(), reached.logAsString());
104 assertEquals(expected.getBegin(), reached.getBegin());
105 }
106
107 public static SlcExecution createSimpleSlcExecution() {
108 SlcExecution slcExec = new SlcExecution();
109 slcExec.setUuid(UUID.randomUUID().toString());
110 slcExec.setHost("localhost");
111 slcExec.setPath("/test");
112 slcExec.setType("slcAnt");
113 slcExec.setStatus("STARTED");
114 return slcExec;
115 }
116 }