/**
* Copyright 2014 SAP AG
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.aim.api.measurement.dataset;
import junit.framework.Assert;
import org.aim.artifacts.records.ResponseTimeRecord;
import org.aim.artifacts.records.ThreadTracingRecord;
import org.junit.Test;
public class SelectionTest {
@Test
public void testRowSelection() {
DatasetCollection dsCollection = SmallDatasetCollection.createDataset();
DatasetRow row = dsCollection.getRows().get(0);
ParameterSelection parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ResponseTimeRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_1);
DatasetRow selectedRow = parSelectionOperation.applyTo(row);
Assert.assertEquals(row.size(), selectedRow.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ResponseTimeRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_2);
selectedRow = parSelectionOperation.applyTo(row);
Assert.assertNull(selectedRow);
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ResponseTimeRecord.PAR_RESPONSE_TIME, 4L);
selectedRow = parSelectionOperation.applyTo(row);
Assert.assertEquals(1, selectedRow.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.largerOrEquals(ResponseTimeRecord.PAR_RESPONSE_TIME, 4L);
selectedRow = parSelectionOperation.applyTo(row);
Assert.assertEquals(4, selectedRow.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.smallerOrEquals(ResponseTimeRecord.PAR_RESPONSE_TIME, 4L);
selectedRow = parSelectionOperation.applyTo(row);
Assert.assertEquals(3, selectedRow.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.between(ResponseTimeRecord.PAR_RESPONSE_TIME, 4L, 6L);
selectedRow = parSelectionOperation.applyTo(row);
Assert.assertEquals(2, selectedRow.size());
}
@Test
public void testDatasetSelection() {
DatasetCollection dsCollection = SmallDatasetCollection.createDataset();
Dataset dataset = dsCollection.getDataSet(ThreadTracingRecord.class);
ParameterSelection parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_1);
Dataset selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(18, selectedDataset.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_2);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(18, selectedDataset.size());
parSelectionOperation.select(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(3, selectedDataset.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(6, selectedDataset.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.largerOrEquals(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(6 * 4, selectedDataset.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.smallerOrEquals(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(6 * 3, selectedDataset.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.between(ThreadTracingRecord.PAR_THREAD_ID, 4L, 6L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertEquals(6 * 2, selectedDataset.size());
dataset = dsCollection.getDataSet(ResponseTimeRecord.class);
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedDataset = parSelectionOperation.applyTo(dataset);
Assert.assertNull(selectedDataset);
}
@Test
public void testDatasetCollectionSelection() {
DatasetCollection dsCollection = SmallDatasetCollection.createDataset();
ParameterSelection parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_1);
DatasetCollection selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(72, selectedCollection.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_2);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(72, selectedCollection.size());
parSelectionOperation.select(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(3, selectedCollection.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(SmallDatasetCollection.NUM_USERS_PARAM, SmallDatasetCollection.NUMUSERS_2);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(48, selectedCollection.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(SmallDatasetCollection.NUM_USERS_PARAM, SmallDatasetCollection.NUMUSERS_2);
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_2);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(24, selectedCollection.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.between(SmallDatasetCollection.NUM_USERS_PARAM, SmallDatasetCollection.NUMUSERS_2,
SmallDatasetCollection.NUMUSERS_3);
parSelectionOperation.select(ThreadTracingRecord.PAR_OPERATION, SmallDatasetCollection.OPERATION_2);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(24 * 2, selectedCollection.size());
parSelectionOperation = new ParameterSelection();
parSelectionOperation.select(ThreadTracingRecord.PAR_THREAD_ID, 4L);
selectedCollection = parSelectionOperation.applyTo(dsCollection);
Assert.assertEquals(6, selectedCollection.size());
}
}