Project

General

Profile

1
package eu.dnetlib.actionmanager.actions;
2

    
3
import java.io.IOException;
4
import java.io.InputStream;
5
import java.io.StringWriter;
6
import java.util.Arrays;
7
import java.util.List;
8
import javax.annotation.Resource;
9
import javax.xml.transform.TransformerException;
10

    
11
import eu.dnetlib.actionmanager.common.Agent;
12
import eu.dnetlib.actionmanager.common.Agent.AGENT_TYPE;
13
import eu.dnetlib.actionmanager.common.Operation;
14
import eu.dnetlib.actionmanager.common.Provenance;
15
import eu.dnetlib.actionmanager.rmi.ActionManagerException;
16
import eu.dnetlib.data.proto.OafProtos.Oaf;
17
import org.apache.commons.io.IOUtils;
18
import org.apache.commons.logging.Log;
19
import org.apache.commons.logging.LogFactory;
20
import org.apache.hadoop.hbase.client.Put;
21
import org.dom4j.DocumentException;
22
import org.junit.Test;
23
import org.junit.runner.RunWith;
24
import org.springframework.test.context.ContextConfiguration;
25
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
26

    
27
import static org.junit.Assert.*;
28

    
29
@RunWith(SpringJUnit4ClassRunner.class)
30
@ContextConfiguration(locations = { "/eu/dnetlib/actionmanager/actions/applicationContext-actionmanager-test.xml" })
31
public class ActionFactoryTest {
32

    
33
	private static final Log log = LogFactory.getLog(ActionFactoryTest.class);
34
	private final static Agent agent = new Agent("agentId", "agentName", AGENT_TYPE.algo);
35
	private final static String trust = "0.9";
36
	private final InputStream recordDataciteInputStream = getClass().getResourceAsStream("recordDatacite.xml");
37
	private final InputStream recordOafInputStream = getClass().getResourceAsStream("record.xml");
38
	@Resource
39
	private ActionFactory actionFactory;
40

    
41
	// @Before
42
	// public void setUp() throws Exception {
43
	//
44
	// }
45

    
46
	@Test
47
	public void testBeans() {
48
		assertNotNull(actionFactory);
49
		assertNotNull(actionFactory.getXslts());
50
		assertFalse(actionFactory.getXslts().isEmpty());
51
	}
52

    
53
	@Test
54
	public void testDataciteInsert() throws ActionManagerException, IOException, TransformerException, DocumentException {
55

    
56
		XsltInfoPackageAction action =
57
				actionFactory.generateInfoPackageAction("datacite2insertActions", "rawSet", agent, Operation.INSERT, asString(recordDataciteInputStream),
58
						Provenance.sysimport_crosswalk_datasetarchive, "datacite____", trust);
59

    
60
		checkActions(action, action.asPutOperations());
61
	}
62

    
63
	@Test
64
	public void testDataciteUpdate() throws ActionManagerException, IOException, TransformerException, DocumentException {
65

    
66
		XsltInfoPackageAction action =
67
				actionFactory.generateInfoPackageAction("datacite2updateActions", "rawSet", agent, Operation.UPDATE, asString(recordDataciteInputStream),
68
						Provenance.sysimport_crosswalk_datasetarchive, "datacite____", trust);
69

    
70
		checkActions(action, action.asPutOperations());
71
	}
72

    
73
	@Test
74
	public void testRecordOafInsert() throws ActionManagerException, IOException, TransformerException, DocumentException {
75

    
76
		XsltInfoPackageAction action =
77
				actionFactory.generateInfoPackageAction("dmf2insertActions", "rawSet", agent, Operation.INSERT, asString(recordOafInputStream),
78
						Provenance.sysimport_crosswalk_datasetarchive, "od_______296", trust);
79

    
80
		checkActions(action, action.asPutOperations());
81
	}
82

    
83
	@Test
84
	public void testRecordOafUpdate() throws ActionManagerException, IOException, TransformerException, DocumentException {
85

    
86
		XsltInfoPackageAction action =
87
				actionFactory.generateInfoPackageAction("dmf2updateActions", "rawSet", agent, Operation.INSERT, asString(recordOafInputStream),
88
						Provenance.sysimport_crosswalk_datasetarchive, "od_______296", trust);
89
		checkActions(action, action.asPutOperations());
90
	}
91

    
92
	private void checkActions(final XsltInfoPackageAction action, final List<Put> puts)
93
			throws TransformerException, DocumentException, com.google.protobuf.InvalidProtocolBufferException {
94
		for (AtomicAction a : action.calculateAtomicActions()) {
95
			assertNotNull(a.getTargetValue());
96

    
97
			String actionJSON = a.toString();
98

    
99
			log.info(actionJSON);
100

    
101
			final AtomicAction aa = AtomicAction.fromJSON(actionJSON);
102

    
103
			assertEquals(a.getRawSet(), aa.getRawSet());
104
			assertEquals(a.getTargetColumn(), aa.getTargetColumn());
105
			assertEquals(a.getTargetColumnFamily(), aa.getTargetColumnFamily());
106
			assertEquals(a.getTargetRowKey(), aa.getTargetRowKey());
107
			assertEquals(a.getActionType(), aa.getActionType());
108
			assertEquals(a.getRowKey(), aa.getRowKey());
109

    
110
			assertEquals(a.getAgent().getId(), aa.getAgent().getId());
111
			assertEquals(a.getAgent().getName(), aa.getAgent().getName());
112
			assertEquals(a.getAgent().getType(), aa.getAgent().getType());
113

    
114
			assertTrue(Arrays.equals(a.getTargetValue(), aa.getTargetValue()));
115

    
116
			System.out.println(Oaf.parseFrom(aa.getTargetValue()));
117
		}
118

    
119
		for (Put put : puts) {
120
			assertNotNull(put);
121
		}
122
		log.info("N. puts: " + puts.size());
123
	}
124

    
125
	private String asString(final InputStream i) throws IOException {
126
		StringWriter writer = new StringWriter();
127
		IOUtils.copy(i, writer);
128
		return writer.toString();
129
	}
130
}
    (1-1/1)