Class: DatahubHttpClientTest

Inherits:
Test::Unit::TestCase
  • Object
show all
Defined in:
lib/fluent/plugin/datahub/datahub-http-client-test.rb

Instance Method Summary collapse

Instance Method Details

#testObject

def teardown

# @client.delete_project(@project_name)
# @client.delete_topic(@project_name, @topic_name)

end

def test_list_projects

puts @client.list_projects

end

def test_get_project

project_name = "test_project_5"
@comment = "test"
@client.create_project(project_name, @comment)
# project存在
project_map = @client.get_project(project_name)
puts project_map
assert_equal(project_map["Comment"], @comment)
@client.delete_project(project_name)

# project不存在
begin
    project_map = @client.get_project("not_exists_project_name")
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "NoSuchProject")
end

end

def test_create_project

test_project_name = "test_project_3"
begin
    @client.delete_project(test_project_name)
rescue => e
end

comment = "jype"
@client.create_project(test_project_name, comment)
project = @client.get_project(test_project_name)

assert_equal(project["Comment"], comment)

# project重复
begin
    @client.create_project(test_project_name, comment)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "ProjectAlreadyExist")
end

# 清理
@client.delete_project(test_project_name)

end

def test_delete_project

test_project_name = "jyp_production_test_create_project_del"
comment = "jype"
@client.create_project(test_project_name, comment)
project = @client.get_project(test_project_name)
assert(project != nil, "project should be not null")
@client.delete_project(test_project_name)
begin
    new_project = @client.get_project(test_project_name)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "NoSuchProject")
end

end

def test_list_topics

puts @client.list_topics(@project_name)

end

def test_write_and_read

@client = DatahubClient.new("http://10.101.200.231:12357", "63wd3dpztlmb5ocdkj94pxmm", "oRd30z7sV4hBX9aYtJgii5qnyhg=")
@datahub_project = @client.get_project("test_project")
# @datahub_topic = @datahub_project.get_topic("fluentd_out_6")
# abc = @datahub_topic.record_schema
# fields = abc.get_fields
# puts fields[0].get_name

record_schema = RecordSchema.new
record_schema.add_field(RecordField.new("id","BIGINT"))
record_schema.add_field(RecordField.new("name","STRING"))
record_schema.add_field(RecordField.new("gender","BOOLEAN"))
record_schema.add_field(RecordField.new("salary","DOUBLE"))
record_schema.add_field(RecordField.new("gmt_create","TIMESTAMP"))

#@datahub_project.create_topic("test_ruby_sdk_table_70", 12, 5, "TUPLE", record_schema, "test for ruby sdk")
my_topic = @datahub_project.get_topic("test_ruby_sdk_table_70")
# assert_equal(my_topic.record_schema.get_fields[0].get_name, "id")

record_entities = []
record_entity = RecordEntity.new(record_schema)
record_entity.setBigInt("id", 1)
record_entity.setString("name", "hj")
record_entity.set_shard_id("0")
record_entities.push(record_entity)
my_topic.write_data(record_entities)

cursor = my_topic.get_cursor("0")
result = my_topic.read_data("0", cursor, 2)
puts result

end

def hash_code(str)

str.each_char.reduce(0) do |result, char|
    [((result << 5) - result) + char.ord].pack('L').unpack('l').first
end

end

def test_hash

string1 = "abcdefg,makeboluogggg"

puts hash_code(string1)

end

def test_get_topic

actual_topic = @client.get_topic(@project_name, @topic_name)
puts actual_topic
assert_equal(actual_topic["Comment"], @topic_comment)
assert_equal(actual_topic["RecordType"], "TUPLE")
assert_equal(actual_topic["ShardCount"], 10)

end

def test_create_topic

record_schema = RecordSchema.new()
id = RecordField.new("id", "BIGINT")
name = RecordField.new("name", "STRING")
age = RecordField.new("age", "BIGINT")

record_schema.add_field(id)
record_schema.add_field(name)
record_schema.add_field(age)

topic_comment = "jyp_production_made_in_asia_test_topic_create_topic"
topic_name = "jyp_production_made_in_asia_test_topic_create_topic"

@client.create_topic(@project_name, topic_name, 4, 7, "TUPLE", record_schema, topic_comment)
actual_topic = @client.get_topic(@project_name, topic_name)
assert_equal(actual_topic["Comment"], topic_comment)
assert_equal(actual_topic["RecordType"], "TUPLE")
assert_equal(actual_topic["ShardCount"], 4)

# 重复创建
begin
    @client.create_topic(@project_name, topic_name, 4, 7, "TUPLE", record_schema, topic_comment)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "TopicAlreadyExist")
end

@client.delete_topic(@project_name, topic_name)

# 工程不存在
begin
    @client.create_topic("project_not_exists_aa", topic_name, 4, 7, "TUPLE", record_schema, topic_comment)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "NoSuchProject")
end

# 无效的参数
begin
    @client.create_topic(@project_name, topic_name, 4, nil, "TUPLE", record_schema, topic_comment)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "InvalidParameter")
end

end

def test_update_topic

record_schema = RecordSchema.new()
id = RecordField.new("id", "BIGINT")
name = RecordField.new("name", "STRING")
age = RecordField.new("age", "BIGINT")

record_schema.add_field(id)
record_schema.add_field(name)
record_schema.add_field(age)

topic_comment = "jyp_production_made_in_asia_test_topic_update_topic"
topic_new_comment = "jyp_production_made_in_asia_test_topic_update_topic_new"
topic_name = "jyp_production_made_in_asia_test_topic_update_topic"

@client.create_topic(@project_name, topic_name, 4, 7, "TUPLE", record_schema, topic_comment)
actual_topic = @client.get_topic(@project_name, topic_name)
assert_equal(actual_topic["Comment"], topic_comment)

@client.update_topic(@project_name, topic_name, 6, topic_new_comment)
actual_topic = @client.get_topic(@project_name, topic_name)
assert_equal(actual_topic["Comment"], topic_new_comment)
assert_equal(actual_topic["Lifecycle"], 6)

@client.delete_topic(@project_name, topic_name)

end

def test_delete_topic

record_schema = RecordSchema.new()
id = RecordField.new("id", "BIGINT")
name = RecordField.new("name", "STRING")
age = RecordField.new("age", "BIGINT")

record_schema.add_field(id)
record_schema.add_field(name)
record_schema.add_field(age)

topic_comment = "jyp_production_made_in_asia_test_topic_delete_topic"
topic_name = "jyp_production_made_in_asia_test_topic_delete_topic"

@client.create_topic(@project_name, topic_name, 4, 7, "TUPLE", record_schema, topic_comment)
actual_topic = @client.get_topic(@project_name, topic_name)
assert(actual_topic != nil, "topic can not be null")
@client.delete_topic(@project_name, topic_name)

begin
    actual_topic = @client.get_topic(@project_name, topic_name)
rescue => e
    resp = JSON.parse(e.message)
    assert_equal(resp["ErrorCode"], "NoSuchTopic")
end

end

def test_list_shard

puts @client.list_shards(@project_name, @topic_name)

end # def test_write_data_to_topic

sleep 1
entity = RecordEntity.new(@record_schema)
entity.set("id", 123)
entity.set("name", "jyp")
entity.set("age", 24)
entity.set_shard_id("0")
record_entities = []
record_entities.push(entity)
puts @client.write_data_to_topic(@project_name, @topic_name, record_entities)

end

def test_get_shard_cursor

sleep 1
puts @client.get_shard_cursor(@project_name, @topic_name, "0", 10)

end

def test_read_data_from_shard

sleep 1
record_entities = []
# 写入0号shard
entity1 = RecordEntity.new(@record_schema)
entity1.set("id", 1111)
entity1.set("name", "jyp111")
entity1.set("age", 24)
entity1.set_shard_id("0")
record_entities.push(entity1)

# 写入1号shard
entity2 = RecordEntity.new(@record_schema)
entity2.set("id", 2222)
entity2.set("name", "jyp222")
entity2.set("age", 25)
entity2.set_shard_id("1")
record_entities.push(entity2)

puts @client.write_data_to_topic(@project_name, @topic_name, record_entities)

sleep 1
# 消费0、1shard的数据
puts @client.read_data_from_shard(@project_name, @topic_name, "0", 10, DateTime.now.strftime('%Q'), "OLDEST")
puts @client.read_data_from_shard(@project_name, @topic_name, "1", 10, DateTime.now.strftime('%Q'), "OLDEST")

end



314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/fluent/plugin/datahub/datahub-http-client-test.rb', line 314

def test
    @client = DatahubHttpClient.new("http://10.101.200.231:12357", "63wd3dpztlmb5ocdkj94pxmm", "oRd30z7sV4hBX9aYtJgii5qnyhg=")

    record_schema = RecordSchema.new
    record_schema.setEncoding("UTF-8")
    record_schema.add_field(RecordField.new("id","BIGINT"))
    record_schema.add_field(RecordField.new("name","STRING"))
    record_schema.add_field(RecordField.new("gender","BOOLEAN"))
    record_schema.add_field(RecordField.new("salary","DOUBLE"))
    record_schema.add_field(RecordField.new("gmt_create","TIMESTAMP"))
    record_entities = []
    record_entity = RecordEntity.new(record_schema)
    record_entity.setBigInt("id", 1)
    tmp = "test哈哈中国人"
    #p tmp.encoding
    #tmp.force_encoding("ASCII-8BIT")
    #p tmp.encoding


    record_entity.setString("name",tmp)
    record_entity.set_shard_id("1")
    record_entity.setDouble("salary","10.00")
    record_entities.push(record_entity)

    @client.write_data_to_topic("test_project", "datahub_file_result", record_entities)

    puts "ok"
end