Search in sources :

Example 6 with TaskStateModelFactory

use of org.apache.helix.task.TaskStateModelFactory in project helix by apache.

the class TestUserContentStore method beforeClass.

@BeforeClass
public void beforeClass() throws Exception {
    _participants = new MockParticipantManager[_numNodes];
    String namespace = "/" + CLUSTER_NAME;
    if (_gZkClient.exists(namespace)) {
        _gZkClient.deleteRecursively(namespace);
    }
    // Setup cluster and instances
    ClusterSetup setupTool = new ClusterSetup(ZK_ADDR);
    setupTool.addCluster(CLUSTER_NAME, true);
    for (int i = 0; i < _numNodes; i++) {
        String storageNodeName = PARTICIPANT_PREFIX + "_" + (_startPort + i);
        setupTool.addInstanceToCluster(CLUSTER_NAME, storageNodeName);
    }
    // start dummy participants
    for (int i = 0; i < _numNodes; i++) {
        final String instanceName = PARTICIPANT_PREFIX + "_" + (_startPort + i);
        // Set task callbacks
        Map<String, TaskFactory> taskFactoryReg = new HashMap<String, TaskFactory>();
        taskFactoryReg.put("ContentStoreTask", new TaskFactory() {

            @Override
            public Task createNewTask(TaskCallbackContext context) {
                return new ContentStoreTask();
            }
        });
        taskFactoryReg.put("TaskOne", new TaskFactory() {

            @Override
            public Task createNewTask(TaskCallbackContext context) {
                return new TaskOne();
            }
        });
        taskFactoryReg.put("TaskTwo", new TaskFactory() {

            @Override
            public Task createNewTask(TaskCallbackContext context) {
                return new TaskTwo();
            }
        });
        _participants[i] = new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, instanceName);
        // Register a Task state model factory.
        StateMachineEngine stateMachine = _participants[i].getStateMachineEngine();
        stateMachine.registerStateModelFactory("Task", new TaskStateModelFactory(_participants[i], taskFactoryReg));
        _participants[i].syncStart();
    }
    // Start controller
    String controllerName = CONTROLLER_PREFIX + "_0";
    _controller = new ClusterControllerManager(ZK_ADDR, CLUSTER_NAME, controllerName);
    _controller.syncStart();
    // Start an admin connection
    _manager = HelixManagerFactory.getZKHelixManager(CLUSTER_NAME, "Admin", InstanceType.ADMINISTRATOR, ZK_ADDR);
    _manager.connect();
    _driver = new TaskDriver(_manager);
}
Also used : Task(org.apache.helix.task.Task) StateMachineEngine(org.apache.helix.participant.StateMachineEngine) MockParticipantManager(org.apache.helix.integration.manager.MockParticipantManager) HashMap(java.util.HashMap) TaskDriver(org.apache.helix.task.TaskDriver) ClusterSetup(org.apache.helix.tools.ClusterSetup) TaskCallbackContext(org.apache.helix.task.TaskCallbackContext) ClusterControllerManager(org.apache.helix.integration.manager.ClusterControllerManager) TaskFactory(org.apache.helix.task.TaskFactory) TaskStateModelFactory(org.apache.helix.task.TaskStateModelFactory) BeforeClass(org.testng.annotations.BeforeClass)

Example 7 with TaskStateModelFactory

use of org.apache.helix.task.TaskStateModelFactory in project helix by apache.

the class TestStateTransitionCancellation method registerParticipants.

private void registerParticipants(MockParticipantManager[] participants, int numNodes, int startPort, long sleepTime, long delay) throws InterruptedException {
    Map<String, TaskFactory> taskFactoryReg = new HashMap<String, TaskFactory>();
    taskFactoryReg.put(MockTask.TASK_COMMAND, new TaskFactory() {

        @Override
        public Task createNewTask(TaskCallbackContext context) {
            return new MockTask(context);
        }
    });
    for (int i = 0; i < numNodes; i++) {
        String instanceName = PARTICIPANT_PREFIX + "_" + (startPort + i);
        participants[i] = new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, instanceName);
        // add a state model with non-OFFLINE initial state
        StateMachineEngine stateMach = participants[i].getStateMachineEngine();
        stateMach.registerStateModelFactory("Task", new TaskStateModelFactory(participants[i], taskFactoryReg));
        InMockDelayMSStateModelFactory delayFactory = new InMockDelayMSStateModelFactory().setDelay(delay);
        stateMach.registerStateModelFactory(MASTER_SLAVE_STATE_MODEL, delayFactory);
        participants[i].syncStart();
        if (sleepTime > 0) {
            Thread.sleep(sleepTime);
        }
    }
}
Also used : Task(org.apache.helix.task.Task) MockTask(org.apache.helix.integration.task.MockTask) StateMachineEngine(org.apache.helix.participant.StateMachineEngine) MockParticipantManager(org.apache.helix.integration.manager.MockParticipantManager) HashMap(java.util.HashMap) MockTask(org.apache.helix.integration.task.MockTask) TaskCallbackContext(org.apache.helix.task.TaskCallbackContext) TaskFactory(org.apache.helix.task.TaskFactory) TaskStateModelFactory(org.apache.helix.task.TaskStateModelFactory)

Aggregations

TaskFactory (org.apache.helix.task.TaskFactory)7 TaskStateModelFactory (org.apache.helix.task.TaskStateModelFactory)7 HashMap (java.util.HashMap)6 MockParticipantManager (org.apache.helix.integration.manager.MockParticipantManager)6 StateMachineEngine (org.apache.helix.participant.StateMachineEngine)6 Task (org.apache.helix.task.Task)6 TaskCallbackContext (org.apache.helix.task.TaskCallbackContext)6 ClusterControllerManager (org.apache.helix.integration.manager.ClusterControllerManager)4 TaskDriver (org.apache.helix.task.TaskDriver)3 ClusterSetup (org.apache.helix.tools.ClusterSetup)3 BeforeClass (org.testng.annotations.BeforeClass)3 MockTask (org.apache.helix.integration.task.MockTask)2 Date (java.util.Date)1 ZNRecord (org.apache.helix.ZNRecord)1 MockTaskStateModelFactory (org.apache.helix.mock.statemodel.MockTaskStateModelFactory)1 TaskConfig (org.apache.helix.task.TaskConfig)1 JobBean (org.apache.helix.task.beans.JobBean)1 WorkflowBean (org.apache.helix.task.beans.WorkflowBean)1 ClusterStateVerifier (org.apache.helix.tools.ClusterStateVerifier)1 Test (org.testng.annotations.Test)1