You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ra...@apache.org on 2011/10/13 07:22:43 UTC

svn commit: r1182655 - in /hbase/trunk: ./ src/test/java/org/apache/hadoop/hbase/ src/test/java/org/apache/hadoop/hbase/master/ src/test/java/org/apache/hadoop/hbase/regionserver/handler/ src/test/java/org/apache/hadoop/hbase/util/

Author: ramkrishna
Date: Thu Oct 13 05:22:43 2011
New Revision: 1182655

URL: http://svn.apache.org/viewvc?rev=1182655&view=rev
Log:
HBASE-4558 Refactor TestOpenedRegionHandler and TestOpenRegionHandler. (Ram)

Added:
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockServer.java
Removed:
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/MockRegionServerServices.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/MockServer.java
Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestOpenedRegionHandler.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestCloseRegionHandler.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1182655&r1=1182654&r2=1182655&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Thu Oct 13 05:22:43 2011
@@ -607,6 +607,7 @@ Release 0.92.0 - Unreleased
                required (Roman Shaposhnik)
    HBASE-4520  Better handling of Bloom filter type discrepancy between HFile
                and CF config (Mikhail Bautin)
+   HBASE-4558  Refactor TestOpenedRegionHandler and TestOpenRegionHandler.(Ram)
        
 
   TASKS

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java?rev=1182655&r1=1182654&r2=1182655&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java Thu Oct 13 05:22:43 2011
@@ -1610,7 +1610,7 @@ public class HBaseTestingUtility {
    */
   public static ZooKeeperWatcher createAndForceNodeToOpenedState(
       HBaseTestingUtility TEST_UTIL, HRegion region,
-      HRegionServer regionServer) throws ZooKeeperConnectionException,
+      ServerName serverName) throws ZooKeeperConnectionException,
       IOException, KeeperException, NodeExistsException {
     ZooKeeperWatcher zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(),
         "unittest", new Abortable() {
@@ -1626,12 +1626,11 @@ public class HBaseTestingUtility {
           }
         });
 
-    ZKAssign.createNodeOffline(zkw, region.getRegionInfo(), regionServer
-        .getServerName());
+    ZKAssign.createNodeOffline(zkw, region.getRegionInfo(), serverName);
     int version = ZKAssign.transitionNodeOpening(zkw, region
-        .getRegionInfo(), regionServer.getServerName());
-    ZKAssign.transitionNodeOpened(zkw, region.getRegionInfo(), regionServer
-        .getServerName(), version);
+        .getRegionInfo(), serverName);
+    ZKAssign.transitionNodeOpened(zkw, region.getRegionInfo(), serverName,
+        version);
     return zkw;
   }
   

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestOpenedRegionHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestOpenedRegionHandler.java?rev=1182655&r1=1182654&r2=1182655&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestOpenedRegionHandler.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestOpenedRegionHandler.java Thu Oct 13 05:22:43 2011
@@ -18,6 +18,9 @@
 package org.apache.hadoop.hbase.master;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
 import java.util.Collection;
@@ -29,14 +32,20 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.ZooKeeperConnectionException;
+import org.apache.hadoop.hbase.executor.EventHandler.EventType;
 import org.apache.hadoop.hbase.master.AssignmentManager.RegionState;
 import org.apache.hadoop.hbase.master.handler.OpenedRegionHandler;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.MockServer;
 import org.apache.hadoop.hbase.zookeeper.ZKAssign;
+import org.apache.hadoop.hbase.zookeeper.ZKTable;
 import org.apache.hadoop.hbase.zookeeper.ZKUtil;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.apache.zookeeper.KeeperException;
@@ -44,6 +53,7 @@ import org.apache.zookeeper.data.Stat;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 public class TestOpenedRegionHandler {
 
@@ -59,16 +69,10 @@ public class TestOpenedRegionHandler {
 
   @Before
   public void setUp() throws Exception {
-    // Start the cluster
-    log("Starting cluster");
     conf = HBaseConfiguration.create();
-    resetConf = conf;
-    conf.setInt("hbase.master.assignment.timeoutmonitor.period", 2000);
-    conf.setInt("hbase.master.assignment.timeoutmonitor.timeout", 5000);
     TEST_UTIL = new HBaseTestingUtility(conf);
-    TEST_UTIL.startMiniCluster(NUM_MASTERS, NUM_RS);
   }
-
+  
   @After
   public void tearDown() throws Exception {
     // Stop the cluster
@@ -78,6 +82,14 @@ public class TestOpenedRegionHandler {
 
   @Test
   public void testOpenedRegionHandlerOnMasterRestart() throws Exception {
+    // Start the cluster
+    log("Starting cluster");
+    conf = HBaseConfiguration.create();
+    resetConf = conf;
+    conf.setInt("hbase.master.assignment.timeoutmonitor.period", 2000);
+    conf.setInt("hbase.master.assignment.timeoutmonitor.timeout", 5000);
+    TEST_UTIL = new HBaseTestingUtility(conf);
+    TEST_UTIL.startMiniCluster(NUM_MASTERS, NUM_RS);
     String tableName = "testOpenedRegionHandlerOnMasterRestart";
     MiniHBaseCluster cluster = createRegions(tableName);
     abortMaster(cluster);
@@ -88,7 +100,7 @@ public class TestOpenedRegionHandler {
     // forcefully move a region to OPENED state in zk
     // Create a ZKW to use in the test
     zkw = HBaseTestingUtility.createAndForceNodeToOpenedState(TEST_UTIL,
-        region, regionServer);
+        region, regionServer.getServerName());
 
     // Start up a new master
     log("Starting up a new master");
@@ -104,42 +116,56 @@ public class TestOpenedRegionHandler {
   @Test
   public void testShouldNotCompeleteOpenedRegionSuccessfullyIfVersionMismatches()
       throws Exception {
-    String tableName = "testIfVersionMismatches";
-    MiniHBaseCluster cluster = createRegions(tableName);
-    AssignmentManager am = cluster.getMaster().assignmentManager;
-    abortMaster(cluster);
-
-    HRegionServer regionServer = cluster.getRegionServer(0);
-    HRegion region = getRegionBeingServed(cluster, regionServer);
-
-    cluster.stopRegionServer(0);
-    //create a node with OPENED state
-    zkw = HBaseTestingUtility.createAndForceNodeToOpenedState(TEST_UTIL,
-        region, regionServer);
-    Stat stat = new Stat();
-    String nodeName = ZKAssign.getNodeName(zkw, region
-        .getRegionNameAsString());
-    ZKUtil.getDataAndWatch(zkw, nodeName, stat);
-    // use the version for the OpenedRegionHandler
-    OpenedRegionHandler handler = new OpenedRegionHandler(regionServer, am,
-        region.getRegionInfo(), regionServer
-        .getServerName(), stat.getVersion());
-    am.regionsInTransition.put(region
-        .getRegionInfo().getEncodedName(), new RegionState(
-            region.getRegionInfo(), RegionState.State.OPEN,
-            System.currentTimeMillis(), regionServer.getServerName()));
-
-    //Once again overwrite the same znode so that the version changes.
-    ZKAssign.transitionNodeOpened(zkw, region.getRegionInfo(), regionServer
-      .getServerName(), stat.getVersion()+1);
-
-    // try processing the opened region.
-    handler.process();
-    List<String> znodes = ZKUtil.listChildrenAndWatchForNewChildren(zkw,
-        zkw.assignmentZNode);
-    String regionName = znodes.get(0);
-    assertEquals("The region should not be opened successfully.", regionName,
-        region.getRegionInfo().getEncodedName());
+    try {
+      int testIndex = 0;
+      TEST_UTIL.startMiniZKCluster();
+      final Server server = new MockServer(TEST_UTIL);
+      HTableDescriptor htd = new HTableDescriptor(
+          "testShouldNotCompeleteOpenedRegionSuccessfullyIfVersionMismatches");
+      HRegionInfo hri = new HRegionInfo(htd.getName(),
+          Bytes.toBytes(testIndex), Bytes.toBytes(testIndex + 1));
+      HRegion region = HRegion.createHRegion(hri, HBaseTestingUtility
+          .getTestDir(), TEST_UTIL.getConfiguration(), htd);
+      assertNotNull(region);
+      AssignmentManager am = Mockito.mock(AssignmentManager.class);
+      when(am.isRegionInTransition(hri)).thenReturn(
+          new RegionState(region.getRegionInfo(), RegionState.State.OPEN,
+              System.currentTimeMillis(), server.getServerName()));
+      // create a node with OPENED state
+      zkw = HBaseTestingUtility.createAndForceNodeToOpenedState(TEST_UTIL,
+          region, server.getServerName());
+      when(am.getZKTable()).thenReturn(new ZKTable(zkw));
+      Stat stat = new Stat();
+      String nodeName = ZKAssign.getNodeName(zkw, region.getRegionInfo()
+          .getEncodedName());
+      ZKUtil.getDataAndWatch(zkw, nodeName, stat);
+
+      // use the version for the OpenedRegionHandler
+      OpenedRegionHandler handler = new OpenedRegionHandler(server, am, region
+          .getRegionInfo(), server.getServerName(), stat.getVersion());
+      // Once again overwrite the same znode so that the version changes.
+      ZKAssign.transitionNode(zkw, region.getRegionInfo(), server
+          .getServerName(), EventType.RS_ZK_REGION_OPENED,
+          EventType.RS_ZK_REGION_OPENED, stat.getVersion());
+
+      // Should not invoke assignmentmanager.regionOnline. If it is 
+      // invoked as per current mocking it will throw null pointer exception.
+      boolean expectedException = false;
+      try {
+        handler.process();
+      } catch (Exception e) {
+        expectedException = true;
+      }
+      assertFalse("The process method should not throw any exception.",
+          expectedException);
+      List<String> znodes = ZKUtil.listChildrenAndWatchForNewChildren(zkw,
+          zkw.assignmentZNode);
+      String regionName = znodes.get(0);
+      assertEquals("The region should not be opened successfully.", regionName,
+          region.getRegionInfo().getEncodedName());
+    } finally {
+      TEST_UTIL.shutdownMiniZKCluster();
+    }
   }
   private MiniHBaseCluster createRegions(String tableName)
       throws InterruptedException, ZooKeeperConnectionException, IOException,

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestCloseRegionHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestCloseRegionHandler.java?rev=1182655&r1=1182654&r2=1182655&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestCloseRegionHandler.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestCloseRegionHandler.java Thu Oct 13 05:22:43 2011
@@ -32,6 +32,8 @@ import org.apache.hadoop.hbase.HTableDes
 import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.RegionServerServices;
+import org.apache.hadoop.hbase.util.MockRegionServerServices;
+import org.apache.hadoop.hbase.util.MockServer;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.KeeperException.NodeExistsException;
 import org.junit.Test;
@@ -86,4 +88,4 @@ public class TestCloseRegionHandler {
       assertTrue(server.isStopped());
     }
   }
-}
\ No newline at end of file
+}

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java?rev=1182655&r1=1182654&r2=1182655&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/handler/TestOpenRegionHandler.java Thu Oct 13 05:22:43 2011
@@ -38,6 +38,8 @@ import org.apache.hadoop.hbase.executor.
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.RegionServerServices;
 import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.MockRegionServerServices;
+import org.apache.hadoop.hbase.util.MockServer;
 import org.apache.hadoop.hbase.zookeeper.ZKAssign;
 import org.apache.hadoop.hbase.zookeeper.ZKUtil;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java?rev=1182655&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java Thu Oct 13 05:22:43 2011
@@ -0,0 +1,142 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.hadoop.hbase.util;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentSkipListMap;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.catalog.CatalogTracker;
+import org.apache.hadoop.hbase.ipc.RpcServer;
+import org.apache.hadoop.hbase.regionserver.CompactionRequestor;
+import org.apache.hadoop.hbase.regionserver.FlushRequester;
+import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
+import org.apache.hadoop.hbase.regionserver.RegionServerServices;
+import org.apache.hadoop.hbase.regionserver.wal.HLog;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.zookeeper.KeeperException;
+
+/**
+ * Basic mock region server services.
+ */
+public class MockRegionServerServices implements RegionServerServices {
+  private final Map<String, HRegion> regions = new HashMap<String, HRegion>();
+  private boolean stopping = false;
+  private final ConcurrentSkipListMap<byte[], Boolean> rit = 
+    new ConcurrentSkipListMap<byte[], Boolean>(Bytes.BYTES_COMPARATOR);
+
+  @Override
+  public boolean removeFromOnlineRegions(String encodedRegionName) {
+    return this.regions.remove(encodedRegionName) != null;
+  }
+
+  @Override
+  public HRegion getFromOnlineRegions(String encodedRegionName) {
+    return this.regions.get(encodedRegionName);
+  }
+
+  @Override
+  public void addToOnlineRegions(HRegion r) {
+    this.regions.put(r.getRegionInfo().getEncodedName(), r);
+  }
+
+  @Override
+  public void postOpenDeployTasks(HRegion r, CatalogTracker ct, boolean daughter)
+      throws KeeperException, IOException {
+  }
+
+  @Override
+  public boolean isStopping() {
+    return this.stopping;
+  }
+
+  @Override
+  public HLog getWAL() {
+    return null;
+  }
+
+  @Override
+  public RpcServer getRpcServer() {
+    return null;
+  }
+
+  @Override
+  public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
+    return rit;
+  }
+
+  @Override
+  public FlushRequester getFlushRequester() {
+    return null;
+  }
+
+  @Override
+  public CompactionRequestor getCompactionRequester() {
+    return null;
+  }
+
+  @Override
+  public CatalogTracker getCatalogTracker() {
+    return null;
+  }
+
+  @Override
+  public ZooKeeperWatcher getZooKeeper() {
+    return null;
+  }
+  
+  public RegionServerAccounting getRegionServerAccounting() {
+    return null;
+  }
+
+  @Override
+  public ServerName getServerName() {
+    return null;
+  }
+
+  @Override
+  public Configuration getConfiguration() {
+    return null;
+  }
+
+  @Override
+  public void abort(String why, Throwable e) {
+     //no-op
+  }
+
+  @Override
+  public void stop(String why) {
+    //no-op
+  }
+
+  @Override
+  public boolean isStopped() {
+    return false;
+  }
+
+  @Override
+  public boolean isAborted() {
+    return false;
+  }
+  
+}

Added: hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockServer.java?rev=1182655&view=auto
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockServer.java (added)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MockServer.java Thu Oct 13 05:22:43 2011
@@ -0,0 +1,112 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.hadoop.hbase.util;
+
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.ZooKeeperConnectionException;
+import org.apache.hadoop.hbase.catalog.CatalogTracker;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+
+/**
+ * Basic mock Server for handler tests.
+ */
+public class MockServer implements Server {
+  static final Log LOG = LogFactory.getLog(MockServer.class);
+  final static ServerName NAME = new ServerName("MockServer", 123, -1);
+  
+  boolean stopped;
+  boolean aborted;
+  final ZooKeeperWatcher zk;
+  final HBaseTestingUtility htu;
+
+  @SuppressWarnings("unused")
+  public MockServer() throws ZooKeeperConnectionException, IOException {
+    // Shutdown default constructor by making it private.
+    this(null);
+  }
+
+  public MockServer(final HBaseTestingUtility htu)
+  throws ZooKeeperConnectionException, IOException {
+    this(htu, true);
+  }
+
+  /**
+   * @param htu Testing utility to use
+   * @param zkw If true, create a zkw.
+   * @throws ZooKeeperConnectionException
+   * @throws IOException
+   */
+  public MockServer(final HBaseTestingUtility htu, final boolean zkw)
+  throws ZooKeeperConnectionException, IOException {
+    this.htu = htu;
+    this.zk = zkw?
+      new ZooKeeperWatcher(htu.getConfiguration(), NAME.toString(), this, true):
+      null;
+  }
+
+  @Override
+  public void abort(String why, Throwable e) {
+    LOG.fatal("Abort why=" + why, e);
+    stop(why);
+    this.aborted = true;
+  }
+
+  @Override
+  public void stop(String why) {
+    LOG.debug("Stop why=" + why);
+    this.stopped = true;
+  }
+
+  @Override
+  public boolean isStopped() {
+    return this.stopped;
+  }
+
+  @Override
+  public Configuration getConfiguration() {
+    return this.htu.getConfiguration();
+  }
+
+  @Override
+  public ZooKeeperWatcher getZooKeeper() {
+    return this.zk;
+  }
+
+  @Override
+  public CatalogTracker getCatalogTracker() {
+    return null;
+  }
+
+  @Override
+  public ServerName getServerName() {
+    return NAME;
+  }
+
+  @Override
+  public boolean isAborted() {
+    // TODO Auto-generated method stub
+    return this.aborted;
+  }
+}