/* Copyright 2012 Google, Inc. * * 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.arbeitspferde.groningen.common; import org.arbeitspferde.groningen.experimentdb.SubjectStateBridge; import org.arbeitspferde.groningen.experimentdb.jvmflags.JvmFlag; import org.arbeitspferde.groningen.experimentdb.jvmflags.JvmFlagSet; public class EvaluatedSubjectTest extends ClockedExperimentDbTestCaseBase { private SubjectStateBridge subject; private double fitness; private EvaluatedSubject evaluatedSubject; @Override public void setUp() throws Exception { super.setUp(); subject = experimentDb.makeSubject(); final JvmFlagSet.Builder builder = JvmFlagSet.builder() .withValue(JvmFlag.ADAPTIVE_SIZE_DECREMENT_SCALE_FACTOR, 1) .withValue(JvmFlag.CMS_EXP_AVG_FACTOR, 3) .withValue(JvmFlag.CMS_INCREMENTAL_DUTY_CYCLE, 4) .withValue(JvmFlag.CMS_INCREMENTAL_DUTY_CYCLE_MIN, 5) .withValue(JvmFlag.CMS_INCREMENTAL_OFFSET, 6) .withValue(JvmFlag.CMS_INCREMENTAL_SAFETY_FACTOR, 7) .withValue(JvmFlag.CMS_INITIATING_OCCUPANCY_FRACTION, 8) .withValue(JvmFlag.GC_TIME_RATIO, 9) .withValue(JvmFlag.MAX_GC_PAUSE_MILLIS, 10) .withValue(JvmFlag.MAX_HEAP_FREE_RATIO, 11) .withValue(JvmFlag.MIN_HEAP_FREE_RATIO, 12) .withValue(JvmFlag.NEW_RATIO, 13) .withValue(JvmFlag.MAX_NEW_SIZE, 14) .withValue(JvmFlag.PARALLEL_GC_THREADS, 15) .withValue(JvmFlag.SURVIVOR_RATIO, 16) .withValue(JvmFlag.TENURED_GENERATION_SIZE_INCREMENT, 17) .withValue(JvmFlag.YOUNG_GENERATION_SIZE_INCREMENT, 18) .withValue(JvmFlag.SOFT_REF_LRU_POLICY_MS_PER_MB, 19) .withValue(JvmFlag.CMS_INCREMENTAL_MODE, 1) .withValue(JvmFlag.CMS_INCREMENTAL_PACING, 0) .withValue(JvmFlag.USE_CMS_INITIATING_OCCUPANCY_ONLY, 1) .withValue(JvmFlag.USE_CONC_MARK_SWEEP_GC, 0) .withValue(JvmFlag.USE_PARALLEL_GC, 1) .withValue(JvmFlag.USE_PARALLEL_OLD_GC, 0) .withValue(JvmFlag.USE_SERIAL_GC, 0); final JvmFlagSet jvmFlagSet = builder.build(); subject.storeCommandLine(jvmFlagSet); fitness = 21.17; evaluatedSubject = new EvaluatedSubject(clock, subject, fitness); } /** Test set and get methods */ public void testGetSubject() { assertEquals(evaluatedSubject.getBridge(), subject); } public void testGetFitness() { assertEquals(evaluatedSubject.getFitness(), fitness); } public void testGetExperimentId() { try { evaluatedSubject.getExperimentId(); fail("Expected EvaluatedSubjectException"); } catch (final IllegalStateException expectedSoIgnore) { /* ignore */ } } public void testSetExperimentId() { try { evaluatedSubject.setExperimentId(-1); fail("Expected EvaluatedSubjectException"); } catch (final IllegalArgumentException expectedSoIgnore) { /* ignore */ } evaluatedSubject.setExperimentId(2); assertEquals(2, evaluatedSubject.getExperimentId()); } /** Tests the Comparable interface */ public void testCompareTo() { assertTrue(evaluatedSubject.compareTo(new EvaluatedSubject(clock, subject, fitness)) == 0); assertTrue(evaluatedSubject.compareTo(new EvaluatedSubject(clock, subject, fitness + 1)) < 0); assertTrue(evaluatedSubject.compareTo(new EvaluatedSubject(clock, subject, fitness - 1)) > 0); } }