/** * Copyright 2015 Yahoo Inc. Licensed under the Apache License, Version 2.0 * See accompanying LICENSE file. */ package kafka.manager.utils import kafka.manager.utils.zero81.{PreferredLeaderElectionErrors, PreferredReplicaLeaderElectionCommand} import org.apache.kafka.common.TopicPartition /** * @author hiral */ class TestPreferredReplicaLeaderElection extends CuratorAwareTest { import PreferredLeaderElectionErrors._ test("preferred replica leader election with empty set") { checkError[ElectionSetEmptyOnWrite] { withCurator { curator => PreferredReplicaLeaderElectionCommand.writePreferredReplicaElectionData(curator,Set.empty) } } } test("preferred replica leader election") { withCurator { curator => val set = Set(new TopicPartition("mytopic",1),new TopicPartition("mytopic",2),new TopicPartition("mytopic",3)) PreferredReplicaLeaderElectionCommand.writePreferredReplicaElectionData(curator,set) val json: String = curator.getData.forPath(ZkUtils.PreferredReplicaLeaderElectionPath) assert(json == "{\"version\":1,\"partitions\":[{\"topic\":\"mytopic\",\"partition\":1},{\"topic\":\"mytopic\",\"partition\":2},{\"topic\":\"mytopic\",\"partition\":3}]}") } } test("preferred replica leader election already running") { checkError[ElectionAlreadyInProgress] { withCurator { curator => val set = Set(new TopicPartition("mytopic", 1), new TopicPartition("mytopic", 2), new TopicPartition("mytopic", 3)) PreferredReplicaLeaderElectionCommand.writePreferredReplicaElectionData(curator, set) val json: String = curator.getData.forPath(ZkUtils.PreferredReplicaLeaderElectionPath) assert(json == "{\"version\":1,\"partitions\":[{\"topic\":\"mytopic\",\"partition\":1},{\"topic\":\"mytopic\",\"partition\":2},{\"topic\":\"mytopic\",\"partition\":3}]}") } } } }