hadoop开发包里一般都携带一些基准测试程序,这是一批程序,如何管理好大型项目的测试程序,做一个方便好用的工具呢?
我们都知道,java程序的基本单位是类,程序的入口是指定类的main方法,有时候可能会通过抽象工厂方法实现程序的适配,这种方式当然也是行之有效的,但是有时候更简单的方式是控制程序启动的入口。
hadoop的基准测试程序就是这样做的。
首先给每一个测试程序起一个名字,例如mrbench,nnbench,TestDFSIO...等,然后工具类需要想办法收集所有测试程序的执行类及入口地址。这时候hadoop是这样实现的,这个工具类叫做ProgramDriver :
首先采集所有的测试程序描述,
public void addClass (String name, Class mainClass, String description) throws Throwable {
programs.put(name , new ProgramDescription(mainClass, description));
}
/*programs是一个map,程序的名字,可以自定义作为key,程序描述类ProgramDescription作为value。
ProgramDescription是一个完整程序的描述类,其中,保存了程序的Class对象,用于