func TestDeadTimeout(t *testing.T) { if testing.Verbose() { logp.LogInit(logp.LOG_DEBUG, "", false, true, []string{"elasticsearch"}) } var pool ConnectionPool urls := []string{"localhost:9200", "localhost:9201"} err := pool.SetConnections(urls, "test", "secret") if err != nil { t.Errorf("Fail to set the connections: %s", err) } pool.SetDeadTimeout(10) conn := pool.GetConnection() if conn.Url != "localhost:9200" { t.Errorf("Wrong connection returned: %s", conn.Url) } pool.MarkDead(conn) time.Sleep(10 * time.Second) conn = pool.GetConnection() if conn.Url != "localhost:9201" { t.Errorf("Wrong connection returned: %s", conn.Url) } conn = pool.GetConnection() if conn.Url != "localhost:9200" { t.Errorf("Wrong connection returned: %s", conn.Url) } }
func TestIndex(t *testing.T) { if testing.Verbose() { logp.LogInit(logp.LOG_DEBUG, "", false, true, []string{"elasticsearch"}) } if testing.Short() { t.Skip("Skipping in short mode, because it requires Elasticsearch") } es := GetTestingElasticsearch() index := fmt.Sprintf("packetbeat-unittest-%d", os.Getpid()) body := map[string]interface{}{ "user": "******", "post_date": "2009-11-15T14:12:12", "message": "trying out", } params := map[string]string{ "refresh": "true", } resp, err := es.Index(index, "test", "1", params, body) if err != nil { t.Errorf("Index() returns error: %s", err) } if !resp.Created { t.Errorf("Index() fails: %s", resp) } params = map[string]string{ "q": "user:test", } result, err := es.SearchUri(index, "test", params) if err != nil { t.Errorf("SearchUri() returns an error: %s", err) } if result.Hits.Total != 1 { t.Errorf("Wrong number of search results: %d", result.Hits.Total) } resp, err = es.Delete(index, "test", "1", nil) if err != nil { t.Errorf("Delete() returns error: %s", err) } }
func TestMultipleHost_Bulk(t *testing.T) { if testing.Verbose() { logp.LogInit(logp.LOG_DEBUG, "", false, true, []string{"elasticsearch"}) } index := fmt.Sprintf("packetbeat-unittest-%d", os.Getpid()) expected_resp, _ := json.Marshal(QueryResult{Ok: true, Index: index, Type: "type1", Id: "1", Version: 1, Created: true}) ops := []map[string]interface{}{ { "index": map[string]interface{}{ "_index": index, "_type": "type1", "_id": "1", }, }, { "field1": "value1", }, } body := make(chan interface{}, 10) for _, op := range ops { body <- op } close(body) server1 := ElasticsearchMock(503, []byte("Somehting went wrong")) server2 := ElasticsearchMock(200, expected_resp) es := NewElasticsearch([]string{server1.URL, server2.URL}, "", "") params := map[string]string{ "refresh": "true", } resp, err := es.Bulk(index, "type1", params, body) if err != nil { t.Errorf("Bulk() returns error: %s", err) } if !resp.Created { t.Errorf("Bulk() fails: %s", resp) } }
func TestOneHost500Resp_Bulk(t *testing.T) { if testing.Verbose() { logp.LogInit(logp.LOG_DEBUG, "", false, true, []string{"elasticsearch"}) } index := fmt.Sprintf("packetbeat-unittest-%d", os.Getpid()) ops := []map[string]interface{}{ { "index": map[string]interface{}{ "_index": index, "_type": "type1", "_id": "1", }, }, { "field1": "value1", }, } body := make(chan interface{}, 10) for _, op := range ops { body <- op } close(body) server := ElasticsearchMock(http.StatusInternalServerError, []byte("Something wrong happened")) es := NewElasticsearch([]string{server.URL}, "", "") params := map[string]string{ "refresh": "true", } _, err := es.Bulk(index, "type1", params, body) if err == nil { t.Errorf("Bulk() should return error.") } if !strings.Contains(err.Error(), "500 Internal Server Error") { t.Errorf("Should return <500 Internal Server Error> instead of %v", err) } }