Project

General

Profile

« Previous | Next » 

Revision 7850

First pass at MN.getPackage() implementation using Bagit library from LOC. https://projects.ecoinformatics.org/ecoinfo/issues/6026

View differences:

MNodeServiceTest.java
26 26
package edu.ucsb.nceas.metacat.dataone;
27 27

  
28 28

  
29
import gov.loc.repository.bagit.Bag;
30
import gov.loc.repository.bagit.BagFactory;
31

  
29 32
import java.io.ByteArrayInputStream;
30 33
import java.io.ByteArrayOutputStream;
34
import java.io.File;
35
import java.io.FileOutputStream;
31 36
import java.io.IOException;
32 37
import java.io.InputStream;
33 38
import java.io.UnsupportedEncodingException;
......
142 147
    suite.addTest(new MNodeServiceTest("testSetAccessPolicy"));
143 148
    // MNreplication tests
144 149
    suite.addTest(new MNodeServiceTest("testReplicate"));
150
    // MN packaging tests
151
    suite.addTest(new MNodeServiceTest("testGetPackage"));
145 152
    
146 153
    
147 154
    return suite;
......
1091 1098
      
1092 1099
  }
1093 1100
  
1101
	/**
1102
	 * Test getting a known object
1103
	 */
1104
	public void testGetPackage() {
1105
		printTestHeader("testGetPackage");
1106

  
1107
		try {
1108
			Session session = getTestSession();
1109
			Identifier guid = new Identifier();
1110
			guid.setValue("testGetPackage." + System.currentTimeMillis());
1111
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
1112
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
1113
			Identifier pid = MNodeService.getInstance(request).create(session, guid, object, sysmeta);
1114
			InputStream bagStream = MNodeService.getInstance(request).getPackage(session, pid);
1115
			File bagFile = File.createTempFile("bagit", ".zip");
1116
			IOUtils.copy(bagStream, new FileOutputStream(bagFile));
1117
			BagFactory bagFactory = new BagFactory();
1118
			Bag bag = bagFactory.createBag(bagFile);
1119
			InputStream result = bag.getPayload().iterator().next().newInputStream();
1120
			
1121
			// go back to beginning of original stream
1122
			object.reset();
1123
			// check
1124
			assertTrue(object.available() > 0);
1125
			assertTrue(result.available() > 0);
1126
			assertTrue(IOUtils.contentEquals(result, object));
1127
			
1128
			// clean up
1129
			bagFile.delete();
1130

  
1131
		} catch (Exception e) {
1132
			e.printStackTrace();
1133
			fail("Unexpected error: " + e.getMessage());
1134
		}
1135
	}
1094 1136
  
1095 1137
  
1096 1138
  

Also available in: Unified diff