infrastructure-tests/src/test/java/org/gcube/documentstore/persistence/PersistenceMongoDBTest.java

100 lines
3.5 KiB
Java

/**
*
*/
package org.gcube.documentstore.persistence;
import java.net.URL;
import org.bson.Document;
import org.gcube.accounting.datamodel.UsageRecord;
import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.OperationType;
import org.gcube.accounting.datamodel.basetypes.TestUsageRecord;
import org.gcube.accounting.persistence.TestUtility;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.documentstore.records.Record;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
public class PersistenceMongoDBTest {
private static final Logger logger = LoggerFactory.getLogger(PersistenceMongoDBTest.class);
@Before
public void before() throws Exception {
SecurityTokenProvider.instance.set(TestUtility.TOKEN);
}
@After
public void after(){
SecurityTokenProvider.instance.reset();
}
@Test
public void testJsonNodeUsageRecordConversions() throws Exception {
Record record = TestUsageRecord.createTestServiceUsageRecordAutomaticScope();
logger.debug("UsageRecord : {}", record.toString());
Document document = PersistenceMongoDB.usageRecordToDocument(record);
logger.debug("Document : {}", document.toString());
Record r = PersistenceMongoDB.documentToUsageRecord(document);
Assert.assertEquals(0, record.compareTo(r));
Assert.assertEquals(0, r.compareTo(record));
}
@Test
public void testJsonNodeUsageRecordConversionsWithNestedMap() throws Exception {
Record record = TestUsageRecord.createTestTaskUsageRecordAutomaticScope();
logger.debug("UsageRecord : {}", record.toString());
Document document = PersistenceMongoDB.usageRecordToDocument(record);
logger.debug("Document : {}", document.toString());
Record r = PersistenceMongoDB.documentToUsageRecord(document);
Assert.assertEquals(0, record.compareTo(r));
Assert.assertEquals(0, r.compareTo(record));
}
public enum AUX {
TEST, TESTER, TESTING
}
@Test
public void testConfiguration() throws Exception{
URL url = new URL("http://mongo-test.d4science.org");
PersistenceBackendConfiguration persitenceConfiguration = PersistenceBackendConfiguration.getUnconfiguredInstance();
persitenceConfiguration.addProperty(PersistenceMongoDB.URL_PROPERTY_KEY, url.toString());
persitenceConfiguration.addProperty(PersistenceMongoDB.USERNAME_PROPERTY_KEY, "accounting");
persitenceConfiguration.addProperty(PersistenceMongoDB.PASSWORD_PROPERTY_KEY, "testpwd");
persitenceConfiguration.addProperty(PersistenceMongoDB.DB_NAME,"accounting");
persitenceConfiguration.addProperty(PersistenceMongoDB.COLLECTION_NAME, UsageRecord.class.getSimpleName());
PersistenceMongoDB mongo = new PersistenceMongoDB();
mongo.prepareConnection(persitenceConfiguration);
Record record = TestUsageRecord.createTestServiceUsageRecordAutomaticScope();
record.setResourceProperty("Test", AUX.TESTER);
mongo.reallyAccount(record);
record = TestUsageRecord.createTestStorageUsageRecordAutomaticScope();
record.setResourceProperty("Test", AUX.TESTER);
mongo.reallyAccount(record);
record = TestUsageRecord.createTestJobUsageRecordAutomaticScope();
mongo.reallyAccount(record);
}
@Test
public void test(){
EnumCodec<OperationType> enumCodec = new EnumCodec<OperationType>(OperationType.class);
Assert.assertEquals(OperationType.class, enumCodec.getEncoderClass());
}
}