HBASE-21947 TestShell is broken after we remove the jackson dependencies

This commit is contained in:
zhangduo 2019-02-25 21:32:14 +08:00
parent 80830ee555
commit e1716107f5
1 changed files with 19 additions and 13 deletions

View File

@ -33,18 +33,20 @@ module Hbase
# Represents information reported by a server on a single MonitoredTask # Represents information reported by a server on a single MonitoredTask
class Task class Task
def initialize(taskMap, host) def initialize(taskMap, host)
taskMap.each_pair do |k, v| taskMap.entrySet.each do |entry|
k = entry.getKey
v = entry.getValue
case k case k
when 'statustimems' when 'statustimems'
@statustime = Time.at(v / 1000) @statustime = Time.at(v.getAsLong / 1000)
when 'status' when 'status'
@status = v @status = v.getAsString
when 'starttimems' when 'starttimems'
@starttime = Time.at(v / 1000) @starttime = Time.at(v.getAsLong / 1000)
when 'description' when 'description'
@description = v @description = v.getAsString
when 'state' when 'state'
@state = v @state = v.getAsString
end end
end end
@ -74,7 +76,8 @@ module Hbase
# Returns a filtered list of tasks on the given host # Returns a filtered list of tasks on the given host
def tasksOnHost(filter, host) def tasksOnHost(filter, host)
java_import 'java.net.URL' java_import 'java.net.URL'
java_import 'com.fasterxml.jackson.databind.ObjectMapper' java_import 'java.io.InputStreamReader'
java_import 'org.apache.hbase.thirdparty.com.google.gson.JsonParser'
infoport = @admin.getClusterStatus.getLoad(host).getInfoServerPort.to_s infoport = @admin.getClusterStatus.getLoad(host).getInfoServerPort.to_s
@ -88,16 +91,19 @@ module Hbase
schema = 'http://' schema = 'http://'
url = schema + host.hostname + ':' + infoport + '/rs-status?format=json&filter=' + filter url = schema + host.hostname + ':' + infoport + '/rs-status?format=json&filter=' + filter
json = URL.new(url) json = URL.new(url).openStream
mapper = ObjectMapper.new parser = JsonParser.new
# read and parse JSON # read and parse JSON
tasksArrayList = mapper.readValue(json, java.lang.Object.java_class) begin
tasks_array_list = parser.parse(InputStreamReader.new(json, 'UTF-8')).getAsJsonArray
ensure
json.close
end
# convert to an array of TaskMonitor::Task instances # convert to an array of TaskMonitor::Task instances
tasks = [] tasks = []
tasksArrayList.each do |t| tasks_array_list.each do |t|
tasks.unshift Task.new(t, host) tasks.unshift Task.new(t.getAsJsonObject, host)
end end
tasks tasks