httpjson test real response from issue #729
This commit is contained in:
parent
54ee44839c
commit
918c3fb260
|
@ -23,7 +23,8 @@ type HttpJson struct {
|
||||||
TagKeys []string
|
TagKeys []string
|
||||||
Parameters map[string]string
|
Parameters map[string]string
|
||||||
Headers map[string]string
|
Headers map[string]string
|
||||||
client HTTPClient
|
|
||||||
|
client HTTPClient
|
||||||
}
|
}
|
||||||
|
|
||||||
type HTTPClient interface {
|
type HTTPClient interface {
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package httpjson
|
package httpjson
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -27,6 +29,75 @@ const validJSON = `
|
||||||
"another_list": [4]
|
"another_list": [4]
|
||||||
}`
|
}`
|
||||||
|
|
||||||
|
const validJSON2 = `{
|
||||||
|
"user":{
|
||||||
|
"hash_rate":0,
|
||||||
|
"expected_24h_rewards":0,
|
||||||
|
"total_rewards":0.000595109232,
|
||||||
|
"paid_rewards":0,
|
||||||
|
"unpaid_rewards":0.000595109232,
|
||||||
|
"past_24h_rewards":0,
|
||||||
|
"total_work":"5172625408",
|
||||||
|
"blocks_found":0
|
||||||
|
},
|
||||||
|
"workers":{
|
||||||
|
"brminer.1":{
|
||||||
|
"hash_rate":0,
|
||||||
|
"hash_rate_24h":0,
|
||||||
|
"valid_shares":"6176",
|
||||||
|
"stale_shares":"0",
|
||||||
|
"invalid_shares":"0",
|
||||||
|
"rewards":4.5506464e-5,
|
||||||
|
"rewards_24h":0,
|
||||||
|
"reset_time":1455409950
|
||||||
|
},
|
||||||
|
"brminer.2":{
|
||||||
|
"hash_rate":0,
|
||||||
|
"hash_rate_24h":0,
|
||||||
|
"valid_shares":"0",
|
||||||
|
"stale_shares":"0",
|
||||||
|
"invalid_shares":"0",
|
||||||
|
"rewards":0,
|
||||||
|
"rewards_24h":0,
|
||||||
|
"reset_time":1455936726
|
||||||
|
},
|
||||||
|
"brminer.3":{
|
||||||
|
"hash_rate":0,
|
||||||
|
"hash_rate_24h":0,
|
||||||
|
"valid_shares":"0",
|
||||||
|
"stale_shares":"0",
|
||||||
|
"invalid_shares":"0",
|
||||||
|
"rewards":0,
|
||||||
|
"rewards_24h":0,
|
||||||
|
"reset_time":1455936733
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pool":{
|
||||||
|
"hash_rate":114100000,
|
||||||
|
"active_users":843,
|
||||||
|
"total_work":"5015346808842682368",
|
||||||
|
"pps_ratio":1.04,
|
||||||
|
"pps_rate":7.655e-9
|
||||||
|
},
|
||||||
|
"network":{
|
||||||
|
"hash_rate":1426117703,
|
||||||
|
"block_number":944895,
|
||||||
|
"time_per_block":156,
|
||||||
|
"difficulty":51825.72835216,
|
||||||
|
"next_difficulty":51916.15249019,
|
||||||
|
"retarget_time":95053
|
||||||
|
},
|
||||||
|
"market":{
|
||||||
|
"ltc_btc":0.00798,
|
||||||
|
"ltc_usd":3.37801,
|
||||||
|
"ltc_eur":3.113,
|
||||||
|
"ltc_gbp":2.32807,
|
||||||
|
"ltc_rub":241.796,
|
||||||
|
"ltc_cny":21.3883,
|
||||||
|
"btc_usd":422.852
|
||||||
|
}
|
||||||
|
}`
|
||||||
|
|
||||||
const validJSONTags = `
|
const validJSONTags = `
|
||||||
{
|
{
|
||||||
"value": 15,
|
"value": 15,
|
||||||
|
@ -149,6 +220,73 @@ func TestHttpJson200(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test litecoin sample output
|
||||||
|
func TestHttpJsonLiteCoin(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
fmt.Fprintln(w, validJSON2)
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
a := HttpJson{
|
||||||
|
Servers: []string{ts.URL},
|
||||||
|
Name: "",
|
||||||
|
Method: "GET",
|
||||||
|
client: RealHTTPClient{client: &http.Client{}},
|
||||||
|
}
|
||||||
|
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
err := a.Gather(&acc)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// remove response_time from gathered fields because it's non-deterministic
|
||||||
|
delete(acc.Metrics[0].Fields, "response_time")
|
||||||
|
|
||||||
|
fields := map[string]interface{}{
|
||||||
|
"market_btc_usd": float64(422.852),
|
||||||
|
"market_ltc_btc": float64(0.00798),
|
||||||
|
"market_ltc_cny": float64(21.3883),
|
||||||
|
"market_ltc_eur": float64(3.113),
|
||||||
|
"market_ltc_gbp": float64(2.32807),
|
||||||
|
"market_ltc_rub": float64(241.796),
|
||||||
|
"market_ltc_usd": float64(3.37801),
|
||||||
|
"network_block_number": float64(944895),
|
||||||
|
"network_difficulty": float64(51825.72835216),
|
||||||
|
"network_hash_rate": float64(1.426117703e+09),
|
||||||
|
"network_next_difficulty": float64(51916.15249019),
|
||||||
|
"network_retarget_time": float64(95053),
|
||||||
|
"network_time_per_block": float64(156),
|
||||||
|
"pool_active_users": float64(843),
|
||||||
|
"pool_hash_rate": float64(1.141e+08),
|
||||||
|
"pool_pps_rate": float64(7.655e-09),
|
||||||
|
"pool_pps_ratio": float64(1.04),
|
||||||
|
"user_blocks_found": float64(0),
|
||||||
|
"user_expected_24h_rewards": float64(0),
|
||||||
|
"user_hash_rate": float64(0),
|
||||||
|
"user_paid_rewards": float64(0),
|
||||||
|
"user_past_24h_rewards": float64(0),
|
||||||
|
"user_total_rewards": float64(0.000595109232),
|
||||||
|
"user_unpaid_rewards": float64(0.000595109232),
|
||||||
|
"workers_brminer.1_hash_rate": float64(0),
|
||||||
|
"workers_brminer.1_hash_rate_24h": float64(0),
|
||||||
|
"workers_brminer.1_reset_time": float64(1.45540995e+09),
|
||||||
|
"workers_brminer.1_rewards": float64(4.5506464e-05),
|
||||||
|
"workers_brminer.1_rewards_24h": float64(0),
|
||||||
|
"workers_brminer.2_hash_rate": float64(0),
|
||||||
|
"workers_brminer.2_hash_rate_24h": float64(0),
|
||||||
|
"workers_brminer.2_reset_time": float64(1.455936726e+09),
|
||||||
|
"workers_brminer.2_rewards": float64(0),
|
||||||
|
"workers_brminer.2_rewards_24h": float64(0),
|
||||||
|
"workers_brminer.3_hash_rate": float64(0),
|
||||||
|
"workers_brminer.3_hash_rate_24h": float64(0),
|
||||||
|
"workers_brminer.3_reset_time": float64(1.455936733e+09),
|
||||||
|
"workers_brminer.3_rewards": float64(0),
|
||||||
|
"workers_brminer.3_rewards_24h": float64(0),
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AssertContainsFields(t, "httpjson", fields)
|
||||||
|
}
|
||||||
|
|
||||||
// Test response to HTTP 500
|
// Test response to HTTP 500
|
||||||
func TestHttpJson500(t *testing.T) {
|
func TestHttpJson500(t *testing.T) {
|
||||||
httpjson := genMockHttpJson(validJSON, 500)
|
httpjson := genMockHttpJson(validJSON, 500)
|
||||||
|
|
|
@ -133,13 +133,7 @@ func (a *Accumulator) AssertContainsTaggedFields(
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.Measurement == measurement {
|
if p.Measurement == measurement {
|
||||||
if !reflect.DeepEqual(fields, p.Fields) {
|
assert.Equal(t, fields, p.Fields)
|
||||||
pActual, _ := json.MarshalIndent(p.Fields, "", " ")
|
|
||||||
pExp, _ := json.MarshalIndent(fields, "", " ")
|
|
||||||
msg := fmt.Sprintf("Actual:\n%s\n(%T) \nExpected:\n%s\n(%T)",
|
|
||||||
string(pActual), p.Fields, string(pExp), fields)
|
|
||||||
assert.Fail(t, msg)
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -156,13 +150,7 @@ func (a *Accumulator) AssertContainsFields(
|
||||||
defer a.Unlock()
|
defer a.Unlock()
|
||||||
for _, p := range a.Metrics {
|
for _, p := range a.Metrics {
|
||||||
if p.Measurement == measurement {
|
if p.Measurement == measurement {
|
||||||
if !reflect.DeepEqual(fields, p.Fields) {
|
assert.Equal(t, fields, p.Fields)
|
||||||
pActual, _ := json.MarshalIndent(p.Fields, "", " ")
|
|
||||||
pExp, _ := json.MarshalIndent(fields, "", " ")
|
|
||||||
msg := fmt.Sprintf("Actual:\n%s\n(%T) \nExpected:\n%s\n(%T)",
|
|
||||||
string(pActual), p.Fields, string(pExp), fields)
|
|
||||||
assert.Fail(t, msg)
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue