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,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.directory.server.integ.state;
20  
21  
22  import java.io.IOException;
23  import javax.naming.NamingException;
24  
25  import org.apache.directory.server.integ.InheritableServerSettings;
26  import org.junit.internal.runners.TestClass;
27  import org.junit.internal.runners.TestMethod;
28  import org.junit.runner.notification.RunNotifier;
29  
30  
31  /**
32   * The interface representing a state in the lifecycle of a service
33   * during integration testing.
34   *
35   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
36   * @version $Rev$, $Date$
37   */
38  public interface TestServerState
39  {
40      /**
41       * Action where an attempt is made to create the service.  Service
42       * creation in this system is the combined instantiation and
43       * configuration which takes place when the factory is used to get
44       * a new instance of the service.
45       *
46       * @param settings The inherited settings
47       * @throws NamingException if we can't create the service
48       */
49      void create( InheritableServerSettings settings ) throws NamingException;
50  
51  
52      /**
53       * Action where an attempt is made to destroy the service. This
54       * entails nulling out reference to it and triggering garbage
55       * collection.
56       */
57      void destroy();
58  
59  
60      /**
61       * Action where an attempt is made to erase the contents of the
62       * working directory used by the service for various files including
63       * partition database files.
64       *
65       * @throws IOException on errors while deleting the working directory
66       */
67      void cleanup() throws IOException;
68  
69  
70      /**
71       * Action where an attempt is made to start up the service.
72       *
73       * @throws Exception on failures to start the core directory service
74       */
75      void startup() throws Exception;
76  
77  
78      /**
79       * Action where an attempt is made to shutdown the service.
80       *
81       * @throws Exception on failures to stop the core directory service
82       */
83      void shutdown() throws Exception;
84  
85  
86      /**
87       * Action where an attempt is made to run a test against the service.
88       *
89       * All annotations should have already been processed for
90       * InheritableServerSettings yet they and others can be processed since we have
91       * access to the method annotations below
92       *
93       * @param testClass the class whose test method is to be run
94       * @param testMethod the test method which is to be run
95       * @param notifier a notifier to report failures to
96       * @param settings the inherited settings and annotations associated with
97       * the test method
98       */
99      void test( TestClass testClass, TestMethod testMethod, RunNotifier notifier, InheritableServerSettings settings );
100 
101 
102     /**
103      * Action where an attempt is made to revert the service to it's
104      * initial start up state by using a previous snapshot.
105      *
106      * @throws Exception on failures to revert the state of the core
107      * directory service
108      */
109     void revert() throws Exception;
110 }