This project has retired. For details please refer to its Attic page.
TestNotEnoughMapTasks xref
View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.giraph;
20  
21  import org.apache.giraph.conf.GiraphConfiguration;
22  import org.apache.giraph.examples.SimpleCheckpoint;
23  import org.apache.giraph.examples.SimpleSuperstepComputation.SimpleSuperstepVertexInputFormat;
24  import org.apache.giraph.examples.SimpleSuperstepComputation.SimpleSuperstepVertexOutputFormat;
25  import org.apache.giraph.job.GiraphJob;
26  import org.apache.hadoop.fs.Path;
27  import org.junit.Test;
28  
29  import java.io.IOException;
30  
31  import static org.junit.Assert.assertFalse;
32  
33  /**
34   * Unit test for not enough map tasks
35   */
36  public class TestNotEnoughMapTasks extends BspCase {
37  
38    public TestNotEnoughMapTasks() {
39      super(TestNotEnoughMapTasks.class.getName());
40    }
41  
42    /**
43     * This job should always fail gracefully with not enough map tasks.
44     *
45     * @throws IOException
46     * @throws ClassNotFoundException
47     * @throws InterruptedException
48     */
49    @Test
50    public void testNotEnoughMapTasks()
51        throws IOException, InterruptedException, ClassNotFoundException {
52      if (!runningInDistributedMode()) {
53        System.out.println(
54            "testNotEnoughMapTasks: Ignore this test in local mode.");
55        return;
56      }
57      Path outputPath = getTempPath(getCallingMethodName());
58      GiraphConfiguration conf = new GiraphConfiguration();
59      conf.setComputationClass(
60          SimpleCheckpoint.SimpleCheckpointComputation.class);
61      conf.setVertexInputFormatClass(SimpleSuperstepVertexInputFormat.class);
62      conf.setVertexOutputFormatClass(SimpleSuperstepVertexOutputFormat.class);
63      GiraphJob job = prepareJob(getCallingMethodName(), conf, outputPath);
64  
65      // An unlikely impossible number of workers to achieve
66      final int unlikelyWorkers = Short.MAX_VALUE;
67      job.getConfiguration().setWorkerConfiguration(unlikelyWorkers,
68          unlikelyWorkers,
69          100.0f);
70      // Only one poll attempt of one second to make failure faster
71      job.getConfiguration().setMaxMasterSuperstepWaitMsecs(1000);
72      job.getConfiguration().setEventWaitMsecs(1000);
73      assertFalse(job.run(false));
74    }
75  }