Package org.springframework.batch.integration.async

Source Code of org.springframework.batch.integration.async.AsyncItemProcessorTests

/*
* Copyright 2006-2007 the original author or authors.
*
* 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.springframework.batch.integration.async;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;

import org.junit.Test;
import org.springframework.batch.core.scope.context.StepContext;
import org.springframework.batch.core.scope.context.StepSynchronizationManager;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.test.MetaDataInstanceFactory;
import org.springframework.batch.test.StepScopeTestUtils;
import org.springframework.core.task.SimpleAsyncTaskExecutor;

public class AsyncItemProcessorTests {

  private AsyncItemProcessor<String, String> processor = new AsyncItemProcessor<String, String>();

  private ItemProcessor<String, String> delegate = new ItemProcessor<String, String>() {
    public String process(String item) throws Exception {
      return item + item;
    };
  };

  @Test(expected = IllegalArgumentException.class)
  public void testNoDelegate() throws Exception {
    processor.afterPropertiesSet();
  }

  @Test
  public void testExecution() throws Exception {
    processor.setDelegate(delegate);
    Future<String> result = processor.process("foo");
    assertEquals("foofoo", result.get());
  }

  @Test
  public void testExecutionInStepScope() throws Exception {
    delegate = new ItemProcessor<String, String>() {
      public String process(String item) throws Exception {
        StepContext context = StepSynchronizationManager.getContext();
        assertTrue(context != null && context.getStepExecution() != null);
        return item + item;
      };
    };
    processor.setDelegate(delegate);
    Future<String> result = StepScopeTestUtils.doInStepScope(MetaDataInstanceFactory.createStepExecution(), new Callable<Future<String>>() {
      public Future<String> call() throws Exception {
        return processor.process("foo");
      }
    });
    assertEquals("foofoo", result.get());
  }

  @Test
  public void testMultiExecution() throws Exception {
    processor.setDelegate(delegate);
    processor.setTaskExecutor(new SimpleAsyncTaskExecutor());
    List<Future<String>> list = new ArrayList<Future<String>>();
    for (int count = 0; count < 10; count++) {
      list.add(processor.process("foo" + count));
    }
    for (Future<String> future : list) {
      assertTrue(future.get().matches("foo.*foo.*"));
    }
  }

}
 
TOP

Related Classes of org.springframework.batch.integration.async.AsyncItemProcessorTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.