org.opendaylight.sfc.sbrest.provider.task.SbRestSfstTaskTest.java Source code

Java tutorial

Introduction

Here is the source code for org.opendaylight.sfc.sbrest.provider.task.SbRestSfstTaskTest.java

Source

/*
 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */

package org.opendaylight.sfc.sbrest.provider.task;

import static junit.framework.TestCase.assertTrue;

import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.junit.Before;
import org.junit.Test;
import org.opendaylight.sfc.sbrest.json.SfstExporterFactory;
import org.opendaylight.yang.gen.v1.urn.intel.params.xml.ns.yang.sfc.sfst.rev150312.service.function.scheduler.types.ServiceFunctionSchedulerType;
import org.opendaylight.yang.gen.v1.urn.intel.params.xml.ns.yang.sfc.sfst.rev150312.service.function.scheduler.types.ServiceFunctionSchedulerTypeBuilder;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

/**
 * This class contains unit tests for SbRestSfstTaskTest
 *
 * @author Vladimir Lavor
 * @version 0.1
 * @see org.opendaylight.sfc.sbrest.provider.task.SbRestSfstTask
 * @since 2015-06-1
 */

public class SbRestSfstTaskTest {

    private static final String SFST_NAME = "Dummy_SFST";
    private static final String SFST_REST_URI = "/config/service-function-scheduler-type:service-function-scheduler-types/service-function-scheduler-type/";
    private final ObjectMapper mapper = new ObjectMapper();
    private ExecutorService executorService;

    @Before
    public void init() {
        executorService = Executors.newFixedThreadPool(10);
    }

    @Test
    // SbRestAbstractClass creates string jsonObject from dataObject (service function scheduler
    // type) & set Rest uri list
    // contain of jsonObject also depends on rest operation
    // this jsonObject is then compared with object node created in this class
    public void testSbRestSfstTask() throws IOException {
        SbRestSfstTask sbRestSfstTask = new SbRestSfstTask(RestOperation.PUT,
                this.buildServiceFunctionSchedulerType(), executorService);

        JsonNode jsonObject = mapper.readTree(sbRestSfstTask.jsonObject);
        assertTrue("Must be true", jsonObject.equals(this.buildServiceFunctionSchedulerTypeObjectNode()));
        assertTrue("Must be true", sbRestSfstTask.restUriList.get(0).contains(SFST_REST_URI));
    }

    @Test
    public void testSbRestSfstTask1() throws IOException {
        SbRestSfstTask sbRestSfstTask = new SbRestSfstTask(RestOperation.DELETE,
                this.buildServiceFunctionSchedulerType(), executorService);

        JsonNode jsonObject = mapper.readTree(sbRestSfstTask.jsonObject);
        assertTrue("Must be true", jsonObject.equals(buildServiceFunctionSchedulerTypeObjectNode()));
        assertTrue("Must be true", sbRestSfstTask.restUriList.get(0).contains(SFST_REST_URI));
    }

    // build service function scheduler type, which is needed to create SbRestSfstTask object
    private ServiceFunctionSchedulerType buildServiceFunctionSchedulerType() {
        ServiceFunctionSchedulerTypeBuilder serviceFunctionSchedulerTypeBuilder = new ServiceFunctionSchedulerTypeBuilder();
        serviceFunctionSchedulerTypeBuilder.setName(SFST_NAME);

        return serviceFunctionSchedulerTypeBuilder.build();
    }

    private ObjectNode buildServiceFunctionSchedulerTypeObjectNode() {
        ObjectNode topNode = mapper.createObjectNode();
        ObjectNode sfstNode = mapper.createObjectNode();
        sfstNode.put(SfstExporterFactory._NAME, SFST_NAME);
        ArrayNode arrayNode = mapper.createArrayNode();

        arrayNode.add(sfstNode);
        topNode.put(SfstExporterFactory._SERVICE_FUNCTION_SCHEDULE_TYPE, arrayNode);
        return topNode;
    }
}