167 lines
5.4 KiB
Clojure
167 lines
5.4 KiB
Clojure
(ns clj-druid.validations-test
|
|
(:require [clojure.test :refer :all]
|
|
[clj-druid.validations :refer :all]))
|
|
|
|
(def valid-groupby-query
|
|
{:queryType :groupBy
|
|
:dataSource "sample_datasource"
|
|
:granularity :day
|
|
:dimensions ["dim1" "dim2"]
|
|
:filter {
|
|
:type :and
|
|
:fields [
|
|
{:type :selector
|
|
:dimension "sample_dimension1"
|
|
:value "sample_value1"}
|
|
{:type :or
|
|
:fields [{:type :selector
|
|
:dimension "sample_dimension2"
|
|
:value "sample_value2"}
|
|
{:type :selector
|
|
:dimension "sample_dimension3"
|
|
:value "sample_value3"}]}]}
|
|
:aggregations [
|
|
{:type :longSum
|
|
:name "sample_name1"
|
|
:fieldName "sample_fieldName1"}
|
|
{:type :doubleSum
|
|
:name "sample_name2"
|
|
:fieldName "sample_fieldName2"}]
|
|
:postAggregations [
|
|
{:type :arithmetic
|
|
:name "sample_divide"
|
|
:fn "/"
|
|
:fields [
|
|
{:type :fieldAccess
|
|
:name "sample_fieldName1"
|
|
:fieldName "sample_name1"}
|
|
{:type :fieldAccess
|
|
:name "sample_fieldName2"
|
|
:fieldName "sample_name2"}]}]
|
|
:intervals ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"]
|
|
:having {:type :greaterThan
|
|
:aggregation "sample_name1"
|
|
:value 0}})
|
|
|
|
(def valid-search-query
|
|
{:queryType :search
|
|
:dataSource "sample_datasource"
|
|
:granularity :day
|
|
:searchDimensions ["dim1" "dim2"]
|
|
:query {
|
|
:type :insensitive_contains
|
|
:value "Ke"}
|
|
:sort {:type :lexicographic}
|
|
:intervals ["2013-01-01T00:00:00.000/2013-01-03T00:00:00.000"]})
|
|
|
|
|
|
(def valid-segment-metadata-query
|
|
{:queryType :segmentMetadata
|
|
:dataSource "sample_datasource"
|
|
:intervals ["2013-01-01/2014-01-01"]})
|
|
|
|
(def valid-time-boundary-query
|
|
{:queryType :timeBoundary
|
|
:dataSource "sample_datasource"
|
|
:bound :maxTime})
|
|
|
|
(def valid-timeseries-query
|
|
{:queryType :timeseries
|
|
:dataSource "sample_datasource"
|
|
:granularity :day
|
|
:filter {
|
|
:type :and
|
|
:fields [
|
|
{:type :selector :dimension "sample_dimension1" :value "sample_value1"}
|
|
{:type :or
|
|
:fields [
|
|
{:type :selector :dimension "sample_dimension2" :value "sample_value2"}
|
|
{:type :selector :dimension "sample_dimension3" :value "sample_value3"}]}]}
|
|
:aggregations [
|
|
{:type :longSum :name "sample_name1", :fieldName "sample_fieldName1"}
|
|
{:type :doubleSum :name "sample_name2", :fieldName "sample_fieldName2"}]
|
|
:postAggregations [
|
|
{:type :arithmetic
|
|
:name "sample_divide"
|
|
:fn "/"
|
|
:fields [{:type :fieldAccess :name "sample_name1" :fieldName "sample_fieldName1"}
|
|
{:type :fieldAccess :name "sample_name2" :fieldName "sample_fieldName2"}]}]
|
|
|
|
:intervals ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"]})
|
|
|
|
|
|
(def valid-select-query
|
|
{:queryType :select
|
|
:dataSource "wikipedia"
|
|
:dimensions []
|
|
:metrics []
|
|
:granularity :all
|
|
:intervals ["2013-01-01/2013-01-02"]
|
|
:filter {:type :spatial
|
|
:dimension "test"
|
|
:bound {:type :rectangular
|
|
:minCoords [1 2]
|
|
:maxCoords [3 4]}}
|
|
:pagingSpec {:pagingIdentifiers {} :threshold 5}})
|
|
|
|
(def valid-topN-query
|
|
(into valid-timeseries-query {:queryType :topN
|
|
:dimension "dim1"
|
|
:threshold 5
|
|
:metric "count"}))
|
|
|
|
(def valid-filtered-aggregation
|
|
{:queryType :timeseries
|
|
:dataSource "dev.supercell"
|
|
:granularity :all
|
|
:intervals ["2016-03-17T07:30:10.476/2016-03-17T08:30:10.476"]
|
|
:filter {:type :selector
|
|
:dimension "project_id"
|
|
:value "vgteam-TV_Shows"}
|
|
:aggregations [{:type :filtered
|
|
:filter {:type :selector
|
|
:dimension "img-adult"
|
|
:value "false"}
|
|
:aggregator {:type :filtered
|
|
:aggregator {:type :longSum
|
|
:name "qualityRows"
|
|
:fieldName "count" }
|
|
:filter {:type :not
|
|
:field {:type :selector
|
|
:dimension "quality"
|
|
:value nil}}
|
|
:name "img-adult->false->qualityRows"}}]})
|
|
|
|
(deftest test-valid-groupby-query
|
|
(is (= (validate-groupby valid-groupby-query)
|
|
valid-groupby-query)))
|
|
|
|
(deftest test-valid-search-query
|
|
(is (= (validate-search valid-search-query)
|
|
valid-search-query)))
|
|
|
|
(deftest test-valid-segment-metadata-query
|
|
(is (= (validate-segment-metadata valid-segment-metadata-query)
|
|
valid-segment-metadata-query)))
|
|
|
|
(deftest test-valid-time-boundary-query
|
|
(is (= (validate-time-boundary valid-time-boundary-query)
|
|
valid-time-boundary-query)))
|
|
|
|
(deftest test-valid-timeseries-query
|
|
(is (= (validate-timeseries valid-timeseries-query)
|
|
valid-timeseries-query)))
|
|
|
|
(deftest test-valid-filtered-aggregation
|
|
(is (= (validate-timeseries valid-filtered-aggregation)
|
|
valid-filtered-aggregation)))
|
|
|
|
(deftest test-valid-topN-query
|
|
(is (= (validate-topN valid-topN-query)
|
|
valid-topN-query)))
|
|
|
|
(deftest test-valid-select-query
|
|
(is (= (validate valid-select-query :select)
|
|
valid-select-query)))
|
|
|
|
|