blob: 6cdccc3b1133af5bfc6e91c023ce38c1b403b0fd [file] [log] [blame]
/**
* 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.test.system;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.ipc.VersionedProtocol;
import org.apache.hadoop.fs.permission.FsPermission;
/**
* RPC interface of a given Daemon.
*/
public interface DaemonProtocol extends VersionedProtocol{
long versionID = 1L;
/**
* Returns the Daemon configuration.
* @return Configuration
* @throws IOException in case of errors
*/
Configuration getDaemonConf() throws IOException;
/**
* Check if the Daemon is alive.
*
* @throws IOException
* if Daemon is unreachable.
*/
void ping() throws IOException;
/**
* Check if the Daemon is ready to accept RPC connections.
*
* @return true if Daemon is ready to accept RPC connection.
* @throws IOException in case of errors
*/
boolean isReady() throws IOException;
/**
* Get system level view of the Daemon process.
*
* @return returns system level view of the Daemon process.
*
* @throws IOException in case of errors
*/
ProcessInfo getProcessInfo() throws IOException;
/**
* Return a file status object that represents the path.
* @param path
* given path
* @param local
* whether the path is local or not
* @return a FileStatus object
* @throws FileNotFoundException when the path does not exist;
* IOException see specific implementation
*/
FileStatus getFileStatus(String path, boolean local) throws IOException;
/**
* Create a file with given permissions in a file system.
* @param path - source path where the file has to create.
* @param fileName - file name.
* @param permission - file permissions.
* @param local - identifying the path whether its local or not.
* @throws IOException - if an I/O error occurs.
*/
void createFile(String path, String fileName,
FsPermission permission, boolean local) throws IOException;
/**
* Create a folder with given permissions in a file system.
* @param path - source path where the file has to be creating.
* @param folderName - folder name.
* @param permission - folder permissions.
* @param local - identifying the path whether its local or not.
* @throws IOException - if an I/O error occurs.
*/
public void createFolder(String path, String folderName,
FsPermission permission, boolean local) throws IOException;
/**
* List the statuses of the files/directories in the given path if the path is
* a directory.
*
* @param path
* given path
* @param local
* whether the path is local or not
* @return the statuses of the files/directories in the given patch
* @throws IOException in case of errors
*/
FileStatus[] listStatus(String path, boolean local) throws IOException;
/**
* Enables a particular control action to be performed on the Daemon <br/>
*
* @param action is a control action to be enabled.
*
* @throws IOException in case of errors
*/
@SuppressWarnings("unchecked")
void sendAction(ControlAction action) throws IOException;
/**
* Checks if the particular control action has be delivered to the Daemon
* component <br/>
*
* @param action to be checked.
*
* @return true if action is still in waiting queue of
* actions to be delivered.
* @throws IOException in case of errors
*/
@SuppressWarnings("unchecked")
boolean isActionPending(ControlAction action) throws IOException;
/**
* Removes a particular control action from the list of the actions which the
* daemon maintains. <br/>
* <i><b>Not to be directly called by Test Case or clients.</b></i>
* @param action to be removed
* @throws IOException in case of errors
*/
@SuppressWarnings("unchecked")
void removeAction(ControlAction action) throws IOException;
/**
* Clears out the list of control actions on the particular daemon.
* <br/>
* @throws IOException in case of errors
*/
void clearActions() throws IOException;
/**
* Gets a list of pending actions which are targeted on the specified key.
* <br/>
* <i><b>Not to be directly used by clients</b></i>
* @param key target
* @return list of actions.
* @throws IOException in case of errors
*/
@SuppressWarnings("unchecked")
ControlAction[] getActions(Writable key) throws IOException;
/**
* Gets the number of times a particular pattern has been found in the
* daemons log file.<br/>
* <b><i>Please note that search spans across all previous messages of
* Daemon, so better practice is to get previous counts before an operation
* and then re-check if the sequence of action has caused any problems</i></b>
* @param pattern to look for in the damon's log file
* @param list of exceptions to ignore
* @return number of times the pattern if found in log file.
* @throws IOException in case of errors
*/
int getNumberOfMatchesInLogFile(String pattern, String[] list)
throws IOException;
/**
* Gets the user who started the particular daemon initially. <br/>
*
* @return user who started the particular daemon.
* @throws IOException in case of errors
*/
String getDaemonUser() throws IOException;
/**
* It uses for suspending the process.
* @param pid process id.
* @return true if the process is suspended otherwise false.
* @throws IOException if an I/O error occurs.
*/
boolean suspendProcess(String pid) throws IOException;
/**
* It uses for resuming the suspended process.
* @param pid process id
* @return true if suspended process is resumed otherwise false.
* @throws IOException if an I/O error occurs.
*/
boolean resumeProcess(String pid) throws IOException;
}