/PM-module

Performance Management Module

Primary LanguageJavaMIT LicenseMIT

#PM module ##性能管理构件(PM)需求

  • 接收应用程序的性能指标(性能名称、性能指数)
  • 每分钟自动生成性能报告(对每指标求和)
  • 性能报告输出到单独的性能文件,文件名包括性能报告时间

#####新增需求

  • 写内容至指定文件
  • 每天打包输出的文件

##PM jar包: cource-teamwork-1.jar
构件能满足上述需求

模块内部使用数据类型为PerformanceLogImpl(自定义接口实现)的成员变量pmlog来存储性能指标(性能名称、性能指数) 但是考虑到性能指数的数据类型可能会复杂,同时为了增强可复用性,所以使用了泛型

###构造方法

PerformanceManagerImpl<K, V> pManager = new PerformanceManagerImpl<K, V>( fileName );

String fileName:文件名

K为性能名称的数据类型,或者为能区别性能名称的标识的数据类型
V为性能指数的数据类型
K、V也可以用户自定义类,类要实现toString方法来自定义输出格式

比如
如果接收应用程序的性能名称和性能指数都是String类型

PerformanceManagerImpl<String, String> pManager = new PerformanceManagerImpl<String, String>( fileName );

###输出性能文件
####pmlog
PerformanceLogImpl中定义了一系列方法用来更新存储的数据
1.添加一个性能指标

pManager.pmlog.addItem( K key, V value );

2.删除一个性能指标

pManager.pmlog.deleteItem( K key );

3.获得该性能指标的指数

pManager.pmlog.getPerformaceValue( K key );

4.更新某性能指标的指数

pManager.pmlog.updatePerformanceValue( K key, V val);

####方法
1.设置参数

 pManager.setLogDelay( delay );
 pManager.setLogPeriod( period );
 pManager.setLogAppendWrite( appendWrite );
 pManager.setLogSingleFile( singleFile );
 pManager.setLogFilePath( logFilePath  );
 pManager.setLogFileName( logFileName );

logFilePath: 默认为 "logFiles/performanceLog"
logFileName: 默认为实例化pManager时传入的fileName
singleFile: 类型为boolean,为true时,文件输出到logFilePath/logFileName.txt;为false时,定时生成文件,文件名为logFilePath/logFileName/报告生成时间.txt,默认为false
appendWrite: 类型为boolean,为true时,当输出到已存在的文件时,追加到原文件内,默认为true
delay: 默认为0
period: 默认为60000

2.输出
根据pmlog和设置好的参数生成性能文件

 pManager.outputPerformanceLog();

3.停止输出 如果选择定时输出,可以使用以下方法停止

 pManager.endPerformanceOutput();

###直接输出
文件最终输出 recordFilePath/fileName/文件生成时间.txt
1.输出

pManager.recordLog( fileName, content, append )

content: 写入的内容
append: boolean型,是否为追加写入

2.设置文件路径

pManager.setRecordFilePath( recordFilePath )

recordFilePath: 默认为“logFiles/records”

###定时打包文件
1.设置

pManager.setZipFilePath( zipFilePath );
pManager.setZipTime( time )
pManager.setZipInterval( interval )

zipFilePath: 默认为“logFiles/zipFiles”
time: Date类型,表示下一次压缩的时间,重置后会按照interval的间隔计算后续的压缩时间,默认为下一个20点
interval: long类型,表示每两次压缩的间隔时间,默认为一天(24 * 60 * 60 * 1000)

2.停止、重新开始打包

pManager.disableZip();
pManager.ableZip();

##单元测试

测试代码:PerformanceLogImplTest.java
测试结果:

测试功能 预期结果 测试结果
获得某性能的指数(性能指标存在) 返回true 正确
获得某性能的指数(性能指标不存在) 返回false 正确
设置某性能的指数(性能指标存在) 返回true 正确
设置某性能的指数(性能指标不存在) 返回false 正确
添加新性能指数(性能指标不存在) 返回true 正确
添加新性能指数(性能指标存在) 返回false 正确
删除性能指标(性能指标不存在) 返回false 正确
删除性能指标(性能指标存在) 返回true 正确
计算共有几个性能指标 返回个数 正确

测试代码:zipManagerTest.java
测试结果:

测试功能 预期结果 测试结果
添加打包文件 添加成功 通过
更改打包路径 路径更新 通过

测试代码:recordLogTest.java
测试结果:

测试功能 预期结果 测试结果
写入文件 写入成功且路径正确 通过

测试代码:PerformanceManagerImplTest.java
测试结果:

测试功能 预期结果 测试结果
性能文件输出 输出正确 通过
直接输出 输出正确 通过
定时打包 打包成功且路径正确 通过