/* 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;
import com.google.common.hash.Hashing;
import org.arbeitspferde.groningen.config.GroningenConfig;
import org.arbeitspferde.groningen.config.StubConfigManager;
import org.arbeitspferde.groningen.proto.GroningenConfigProto.ProgramConfiguration;
import org.arbeitspferde.groningen.proto.Params.GroningenParams;
import org.arbeitspferde.groningen.utility.Clock;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.joda.time.Instant;
/**
* Test for {@link PipelineIdGenerator}
*/
public class PipelineIdGeneratorTest extends TestCase {
private static final int SHARD_INDEX = 0;
private static final int NUM_SHARDS = 1;
private static final String SERVING_ADDRESS = "myservingaddress:31337";
private final Clock mockClock = EasyMock.createNiceMock(Clock.class);
private final PipelineIdGenerator pipelineIdGenerator =
new PipelineIdGenerator(SHARD_INDEX, NUM_SHARDS, SERVING_ADDRESS, mockClock, Hashing.md5());
private final GroningenConfig stubConfig = new StubConfigManager.StubConfig() {
@Override
public ProgramConfiguration getProtoConfig() {
return ProgramConfiguration.getDefaultInstance();
}
};
public void testGeneratesPipelineId() {
Instant now = Instant.now();
EasyMock.expect(mockClock.now()).andReturn(now);
EasyMock.replay(mockClock);
assertNotNull(pipelineIdGenerator.generatePipelineId(stubConfig));
}
public void testGenerateRequestedPipelineId() {
GroningenConfig configMock = EasyMock.createNiceMock(GroningenConfig.class);
GroningenParams paramBlock = GroningenParams.newBuilder()
.setRequestedPipelineId("fakeId")
.build();
EasyMock.expect(configMock.getParamBlock()).andReturn(paramBlock).anyTimes();
EasyMock.replay(configMock);
PipelineId id = pipelineIdGenerator.generatePipelineId(configMock);
assertEquals(new PipelineId("fakeId"), id);
}
public void testPipelineIdDependsOnCurrentTime() {
Instant now = Instant.now();
Instant nowPlusOne = now.plus(1);
EasyMock.expect(mockClock.now()).andReturn(now);
EasyMock.expect(mockClock.now()).andReturn(nowPlusOne);
EasyMock.replay(mockClock);
PipelineId id1 = pipelineIdGenerator.generatePipelineId(stubConfig);
PipelineId id2 = pipelineIdGenerator.generatePipelineId(stubConfig);
assertTrue(!id1.equals(id2));
}
}