/**
* Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET
* (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije
* informacijske družbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE
* COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVAÇÃO, SA (PTIN), IBM Corp.,
* INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM
* ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC))
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.societies.privacytrust.privacyprotection.assessment.test;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.societies.api.identity.IIdentity;
import org.societies.api.identity.IdentityType;
import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.AssessmentResultClassName;
import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.AssessmentResultIIdentity;
import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.ChannelType;
import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.DataAccessLogEntry;
import org.societies.api.internal.privacytrust.privacyprotection.model.privacyassessment.DataTransmissionLogEntry;
import org.societies.identity.IdentityImpl;
import org.societies.privacytrust.privacyprotection.assessment.log.PrivacyLog;
import org.societies.privacytrust.privacyprotection.assessment.logic.Assessment;
/**
*
*
* @author Mitja Vardjan
*
*/
public class AssessmentTest {
private Date time1 = new Date(1000000);
private Date time2 = new Date(2000000);
private Date time3 = new Date(3000000);
private Date time4 = new Date(4000000);
private Date time5 = new Date(5000000);
private Date time6 = new Date(6000000);
private Date time7 = new Date(7000000);
private Date time8 = new Date(8000000);
private Date time9 = new Date(9000000);
private IIdentity id1 = new IdentityImpl(IdentityType.CSS_RICH, "identifier1", "domain1");
private IIdentity id2 = new IdentityImpl(IdentityType.CSS_LIGHT, "identifier2", "domain1");
private IIdentity id3 = new IdentityImpl(IdentityType.CSS, "identifier3", "domain1");
private IIdentity id4 = new IdentityImpl(IdentityType.CIS, "identifier4", "domain2");
private String class1 = "class1";
private String class2 = "class2";
private String class3 = "class3";
private String class4 = "class4";
private List<String> stack1 = new ArrayList<String>();
private List<String> stack2 = new ArrayList<String>();
private List<String> stack3 = new ArrayList<String>();
private List<String> stack4 = new ArrayList<String>();
private String bundle1 = "bundle1";
private String bundle2 = "bundle2";
private String bundle3 = "bundle3";
private String bundle4 = "bundle4";
private List<String> bundles1 = new ArrayList<String>();
private List<String> bundles2 = new ArrayList<String>();
private List<String> bundles3 = new ArrayList<String>();
private List<String> bundles4 = new ArrayList<String>();
private String dataType1 = "dataType1";
private String dataType2 = "dataType2";
private String dataType3 = "dataType3";
private String dataType4 = "dataType4";
PrivacyLog privacyLog;
Assessment assessment;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
stack1.add(class1);
stack2.add(class2);
stack3.add(class3);
stack4.add(class4);
bundles1.add(bundle1);
bundles2.add(bundle2);
bundles3.add(bundle3);
bundles4.add(bundle2);
bundles4.add(bundle4);
privacyLog = new PrivacyLog();
privacyLog.append(new DataAccessLogEntry(time1, id1, class1, stack1, bundles1, id1, -1));
privacyLog.append(new DataAccessLogEntry(time2, id1, class2, stack2, bundles1, id2, -1));
privacyLog.append(new DataAccessLogEntry(time3, id1, class3, stack3, bundles1, id1, -1));
privacyLog.append(new DataAccessLogEntry(time4, id1, class3, stack3, bundles1, id1, -1));
privacyLog.append(new DataAccessLogEntry(time5, id1, class1, stack1, bundles1, id3, -1));
privacyLog.append(new DataAccessLogEntry(time6, id2, class1, stack1, bundles1, id4, -1));
privacyLog.append(new DataAccessLogEntry(time7, id2, class1, stack1, bundles1, id1, -1));
privacyLog.append(new DataTransmissionLogEntry(dataType1, time2, id1, id1, class2, stack2, bundles1, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType2, time3, id2, id1, class4, stack4, bundles2, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType3, time4, id3, id1, class1, stack1, bundles3, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType4, time4, id4, id1, class3, stack3, bundles4, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType1, time5, id1, id1, class3, stack3, bundles1, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType2, time6, id2, id1, class2, stack2, bundles2, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType3, time7, id3, id1, class4, stack4, bundles3, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType4, time8, id4, id1, class1, stack1, bundles4, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType1, time8, id1, id2, class4, stack4, bundles1, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType2, time9, id2, id1, class1, stack1, bundles2, -1, ChannelType.XMPP));
privacyLog.append(new DataTransmissionLogEntry(dataType3, time9, id3, id1, class3, stack3, bundles3, -1, ChannelType.XMPP));
assessment = new Assessment();
assessment.setPrivacyLog(privacyLog);
assessment.init();
}
/**
* @throws Exception
*/
@After
public void tearDown() throws Exception {
}
/**
* Test method for {@link Assessment#setAutoPeriod(int)}.
*/
@Test
public void testSetAutoPeriod() {
// TODO
}
/**
* Test method for {@link Assessment#getAssessmentAllIds()}.
*/
@Test
public void testGetAssessmentAllIds() {
// HashMap<IIdentity, AssessmentResultIIdentity> result1;
HashMap<IIdentity, AssessmentResultIIdentity> result2;
// result1 = assessment.getAssessmentAllIds();
// assessment.assessAllNow();
result2 = assessment.getAssessmentAllIds(null, null);
// assertEquals(0, result1.size());
assertEquals(2, result2.size());
}
/**
* Test method for {@link Assessment#getAssessmentAllClasses()}.
*/
@Test
public void testGetAssessmentAllClasses() {
// HashMap<String, AssessmentResultClassName> result1;
HashMap<String, AssessmentResultClassName> result2;
// result1 = assessment.getAssessmentAllClasses();
// assessment.assessAllNow();
result2 = assessment.getAssessmentAllClasses(true, null, null);
// assertEquals(0, result1.size());
assertEquals(4, result2.size());
}
/**
* Test method for {@link Assessment#getAssessment(IIdentity)}.
*/
@Test
public void testGetAssessmentIIdentity() {
assessment.assessAllNow(null, null);
}
/**
* Test method for {@link Assessment#getAssessment(String)}.
*/
@Test
public void testGetAssessmentString() {
assessment.assessAllNow(null, null);
}
/**
* Test method for {@link Assessment#getNumDataAccessEvents()}.
*/
@Test
public void testGetNumDataAccessEvents() {
long initial = 7;
int additional = Math.abs(new Random().nextInt()) % 8;
long transmissionEvents = 11;
assertEquals(initial, assessment.getNumDataAccessEvents(null, null));
assertEquals(transmissionEvents, assessment.getNumDataTransmissionEvents(null, null));
appendDataAccessEvents(additional);
assertEquals(initial + additional, assessment.getNumDataAccessEvents(null, null));
assertEquals(transmissionEvents, assessment.getNumDataTransmissionEvents(null, null));
}
/**
* Test method for {@link Assessment#getNumDataTransmissionEvents()}.
*/
@Test
public void testGetNumDataTransmissionEvents() {
long initial = 11;
int additional = Math.abs(new Random().nextInt()) % 8;
long accessEvents = 7;
assertEquals(initial, assessment.getNumDataTransmissionEvents(null, null));
assertEquals(accessEvents, assessment.getNumDataAccessEvents(null, null));
appendDataTransmissionEvents(additional);
assertEquals(initial + additional, assessment.getNumDataTransmissionEvents(null, null));
assertEquals(accessEvents, assessment.getNumDataAccessEvents(null, null));
}
private void appendDataAccessEvents(int num) {
for (int k = 0; k < num; k++) {
privacyLog.append(new DataAccessLogEntry(time7, id2, class1, stack1, bundles1, id1, -1));
}
}
private void appendDataTransmissionEvents(int num) {
for (int k = 0; k < num; k++) {
privacyLog.append(new DataTransmissionLogEntry(dataType1, time2, id1, id1, class2, stack2, bundles1, -1, ChannelType.XMPP));
}
}
}