Nuria has submitted this change and it was merged.
Change subject: Revert "[WIP] Make pageview definition aware of preview
parameter"
......................................................................
Revert "[WIP] Make pageview definition aware of preview parameter"
This reverts commit 36f7f872946e0fbaa7290a0de48ae771f1007a1d.
Change-Id: I9f1a7924b8ebf076f970795b562537dc003c44e4
---
M
refinery-core/src/main/java/org/wikimedia/analytics/refinery/core/PageviewDefinition.java
M
refinery-core/src/test/java/org/wikimedia/analytics/refinery/core/TestPageview.java
D
refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/GenericUDFHelper.java
M
refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsAppPageviewUDF.java
M
refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsPageviewUDF.java
M
refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsAppPageviewUDF.java
M
refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDF.java
D
refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDFArgumentHandling.java
8 files changed, 78 insertions(+), 443 deletions(-)
Approvals:
Nuria: Verified; Looks good to me, approved
diff --git
a/refinery-core/src/main/java/org/wikimedia/analytics/refinery/core/PageviewDefinition.java
b/refinery-core/src/main/java/org/wikimedia/analytics/refinery/core/PageviewDefinition.java
index 9afecf3..63f6bb9 100644
---
a/refinery-core/src/main/java/org/wikimedia/analytics/refinery/core/PageviewDefinition.java
+++
b/refinery-core/src/main/java/org/wikimedia/analytics/refinery/core/PageviewDefinition.java
@@ -18,7 +18,6 @@
import java.util.Arrays;
import java.util.HashSet;
-import java.util.Map;
import java.util.regex.Pattern;
/**
@@ -130,12 +129,6 @@
* to see if the request is an app pageview, but not
* (for example) whether it actually completed.
*
- * See: https://wikitech.wikimedia.org/wiki/X-Analytics#Keys
- * for x-analytics info.
- *
- * Please note that requests tagged as 'preview' are not counted
- * as pageviews.
- *
* @param uriPath Path portion of the URI
* @param uriQuery Query portion of the URI
* @param userAgent User-Agent of the requestor
@@ -146,8 +139,7 @@
String uriPath,
String uriQuery,
String contentType,
- String userAgent,
- Map<String,String> xAnalyticsMap
+ String userAgent
) {
final String appContentType = "application/json";
@@ -155,9 +147,6 @@
final String appPageURIQuery = "sections=0";
final String iosAppPageURIQuery = "sections=all";
final String iosUserAgent = "iPhone";
-
- if (xAnalyticsMap.containsKey("preview"))
- return false;
return (
Utilities.stringContains(uriPath, uriPathAPI)
@@ -177,12 +166,6 @@
* See:
https://meta.wikimedia.org/wiki/Research:Page_view/Generalised_filters
* for information on how to classify a pageview.
*
- * See: https://wikitech.wikimedia.org/wiki/X-Analytics#Keys
- * for x-analytics info.
- *
- * Please note that requests tagged as 'preview' are not counted
- * as pageviews.
- *
* @param uriHost Hostname portion of the URI
* @param uriPath Path portion of the URI
* @param uriQuery Query portion of the URI
@@ -198,13 +181,9 @@
String uriQuery,
String httpStatus,
String contentType,
- String userAgent,
- Map<String,String> xAnalyticsMap
+ String userAgent
) {
uriHost = uriHost.toLowerCase();
-
- if (xAnalyticsMap.containsKey("preview"))
- return false;
return (
// All pageviews have a 200 or 304 HTTP status
@@ -212,7 +191,7 @@
// check for a regular pageview contentType, or a an API
contentType
&& (
(contentTypesSet.contains(contentType) &&
!Utilities.stringContains(uriPath, uriPathAPI))
- || isAppPageview(uriPath, uriQuery, contentType,
userAgent, xAnalyticsMap)
+ || isAppPageview(uriPath, uriQuery, contentType, userAgent)
)
// A pageview must be from either a wikimedia.org domain,
// or a 'project' domain, e.g. en.wikipedia.org
diff --git
a/refinery-core/src/test/java/org/wikimedia/analytics/refinery/core/TestPageview.java
b/refinery-core/src/test/java/org/wikimedia/analytics/refinery/core/TestPageview.java
index b24da28..6365b20 100644
---
a/refinery-core/src/test/java/org/wikimedia/analytics/refinery/core/TestPageview.java
+++
b/refinery-core/src/test/java/org/wikimedia/analytics/refinery/core/TestPageview.java
@@ -14,16 +14,13 @@
package org.wikimedia.analytics.refinery.core;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.assertEquals;
+
import junitparams.FileParameters;
import junitparams.JUnitParamsRunner;
import junitparams.mappers.CsvWithHeaderMapper;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
@RunWith(JUnitParamsRunner.class)
public class TestPageview {
@@ -51,8 +48,6 @@
String user_agent
) {
PageviewDefinition PageviewDefinitionInstance =
PageviewDefinition.getInstance();
- Map<String,String> xAnalyticsMap = new HashMap<String,String>();
-
assertEquals(
test_description,
is_pageview,
@@ -62,8 +57,7 @@
uri_query,
http_status,
content_type,
- user_agent,
- xAnalyticsMap
+ user_agent
)
);
}
@@ -91,8 +85,6 @@
String user_agent
) {
PageviewDefinition PageviewDefinitionInstance =
PageviewDefinition.getInstance();
- Map<String,String> xAnalyticsMap = new HashMap<String,String>();
-
assertEquals(
test_description,
is_app_pageview,
@@ -100,8 +92,7 @@
uri_path,
uri_query,
content_type,
- user_agent,
- xAnalyticsMap
+ user_agent
)
);
}
diff --git
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/GenericUDFHelper.java
b/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/GenericUDFHelper.java
deleted file mode 100644
index b8bc6b3..0000000
---
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/GenericUDFHelper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.wikimedia.analytics.refinery.hive;
-
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-
-/**
- * Created by nuria on 9/8/15.
- *
- * Encapsulates methods to check arguments for UDFs
- *
- * For some reason these are all protected in GenericUDF.java
- * See:
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java
- */
-public class GenericUDFHelper {
-
- /**
- * @return String
- */
- protected String getFuncName(){
- return getClass().getSimpleName().substring(10).toLowerCase();
- }
-
- /*
- * Checks variable argument list, throws exception if not within bounds
- *
- * @param arguments
- * @param min
- * @param max
- * @throws UDFArgumentLengthException
- */
- protected void checkArgsSize(ObjectInspector[] arguments, int min, int max)
- throws UDFArgumentLengthException{
- if (arguments.length < min || arguments.length > max) {
- StringBuilder sb = new StringBuilder();
- sb.append(getFuncName());
- sb.append(" requires ");
- if (min == max) {
- sb.append(min);
- } else {
- sb.append(min).append("..").append(max);
- }
- sb.append(" argument(s), got ");
- sb.append(arguments.length);
- throw new UDFArgumentLengthException(sb.toString());
- }
- }
-
- /**
- * Checks argument type
- *
- * @param arguments
- * @param i
- *
- * @throws UDFArgumentTypeException
- */
- protected void checkArgPrimitive(ObjectInspector[] arguments, int i)
- throws UDFArgumentTypeException{
- ObjectInspector.Category oiCat = arguments[i].getCategory();
- if (oiCat != ObjectInspector.Category.PRIMITIVE) {
- throw new UDFArgumentTypeException(i, getFuncName() + " Argument
should be of primitive type");
- }
- }
-}
diff --git
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsAppPageviewUDF.java
b/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsAppPageviewUDF.java
index 815e74a..d97b021 100644
---
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsAppPageviewUDF.java
+++
b/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsAppPageviewUDF.java
@@ -1,12 +1,12 @@
/**
* Copyright (C) 2014 Wikimedia Foundation
- * <p/>
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- * <p/>
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,8 +18,6 @@
import org.apache.hadoop.hive.ql.exec.UDF;
import org.wikimedia.analytics.refinery.core.PageviewDefinition;
-
-import java.util.Map;
/**
@@ -55,20 +53,17 @@
*/
public class IsAppPageviewUDF extends UDF {
public boolean evaluate(
- String uriPath,
- String uriQuery,
- String contentType,
- String userAgent,
-
- Map<String, String> xAnalyticsMap
+ String uriPath,
+ String uriQuery,
+ String contentType,
+ String userAgent
) {
PageviewDefinition pageviewDefinitionInstance =
PageviewDefinition.getInstance();
return pageviewDefinitionInstance.isAppPageview(
- uriPath,
- uriQuery,
- contentType,
- userAgent,
- xAnalyticsMap
+ uriPath,
+ uriQuery,
+ contentType,
+ userAgent
);
}
}
diff --git
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsPageviewUDF.java
b/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsPageviewUDF.java
index a94c0fa..5314729 100644
---
a/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsPageviewUDF.java
+++
b/refinery-hive/src/main/java/org/wikimedia/analytics/refinery/hive/IsPageviewUDF.java
@@ -1,12 +1,12 @@
/**
* Copyright (C) 2014 Wikimedia Foundation
- * <p/>
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- * <p/>
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,182 +17,58 @@
package org.wikimedia.analytics.refinery.hive;
import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.apache.hadoop.hive.ql.exec.UDF;
import org.wikimedia.analytics.refinery.core.PageviewDefinition;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
/**
* A Hive UDF to classify a Wikimedia webrequest as a 'pageview'.
* See: https://meta.wikimedia.org/wiki/Research:Page_view/Generalised_filters
- * for information on how to classify a pageview.
- * <p/>
- * <p/>
+ * for information on how to classify a pageview.
+ *
+ * <p>
* Hive Usage:
- * ADD JAR /path/to/refinery-hive.jar;
- * CREATE TEMPORARY FUNCTION is_pageview AS
- * 'org.wikimedia.analytics.refinery.hive.IsPageviewUDF';
- * SELECT
- * LOWER(uri_host) as uri_host,
- * count(*) as cnt
- * FROM
- * wmf_raw.webrequest
- * WHERE
- * webrequest_source = 'mobile'
- * AND year=2014
- * AND month=12
- * AND day=7
- * AND hour=12
- * AND is_pageview(uri_host, uri_path, uri_query, http_status, content_type,
user_agent, <x_analytics_map></x_analytics_map>)
- * GROUP BY
- * LOWER(uri_host)
- * ORDER BY cnt desc
- * LIMIT 10
- * ;
+ * ADD JAR /path/to/refinery-hive.jar;
+ * CREATE TEMPORARY FUNCTION is_pageview AS
+ * 'org.wikimedia.analytics.refinery.hive.IsPageviewUDF';
+ * SELECT
+ * LOWER(uri_host) as uri_host,
+ * count(*) as cnt
+ * FROM
+ * wmf_raw.webrequest
+ * WHERE
+ * webrequest_source = 'mobile'
+ * AND year=2014
+ * AND month=12
+ * AND day=7
+ * AND hour=12
+ * AND is_pageview(uri_host, uri_path, uri_query, http_status,
content_type, user_agent)
+ * GROUP BY
+ * LOWER(uri_host)
+ * ORDER BY cnt desc
+ * LIMIT 10
+ * ;
*/
@Description(name = "is_pageview",
value = "_FUNC_(uri_host, uri_path, uri_query, http_status,
content_type, user_agent) - Returns true if the request is a pageview",
extended = "")
-public class IsPageviewUDF extends GenericUDF {
-
- private ObjectInspector[] argumentsOI;
- private transient MapObjectInspector mapOI;
-
- PageviewDefinition pageviewDefinitionInstance;
-
- boolean checkForXAnalytics = false;
- int maxArguments = 7;
- int minArguments = 6;
-
- /**
- * Executed once per job, checks arguments size.
- *
- * In order for changes to be backwards compatible when adding
x_analytics_map
- * accepts that this argument might not be present, thus number
- * of arguments is variable.
- *
- * @param arguments
- * @return
- * @throws UDFArgumentException
- */
- @Override
- public ObjectInspector initialize(ObjectInspector[] arguments) throws
UDFArgumentException {
-
- //at least we should have 6 arguments
- checkArgsSize(arguments, minArguments, maxArguments);
-
- if (arguments.length > minArguments){
- checkForXAnalytics = true;
- }
-
- for (int i = 0; i < minArguments - 1; i++) {
- checkArgPrimitive(arguments, i);
- }
-
-
- if (checkForXAnalytics && arguments[arguments.length -
1].getCategory() != ObjectInspector.Category.MAP) {
- throw new UDFArgumentException("Last Argument should be
x_analytics map");
- }
-
- argumentsOI = arguments;
- pageviewDefinitionInstance = PageviewDefinition.getInstance();
-
-
- return PrimitiveObjectInspectorFactory.javaBooleanObjectInspector;
- }
-
- @Override
- public Object evaluate(DeferredObject[] arguments) throws HiveException {
- String separator = PrimitiveObjectInspectorUtils.getString(
- arguments[0].get(), (PrimitiveObjectInspector) argumentsOI[0]);
-
- String uriHost = PrimitiveObjectInspectorUtils.getString(
- arguments[0].get(), (PrimitiveObjectInspector) argumentsOI[1]);
- String uriPath = PrimitiveObjectInspectorUtils.getString(
- arguments[1].get(), (PrimitiveObjectInspector) argumentsOI[2]);
- String uriQuery = PrimitiveObjectInspectorUtils.getString(
- arguments[2].get(), (PrimitiveObjectInspector) argumentsOI[3]);
- ;
- String httpStatus = PrimitiveObjectInspectorUtils.getString(
- arguments[3].get(), (PrimitiveObjectInspector) argumentsOI[4]);
- String contentType = PrimitiveObjectInspectorUtils.getString(
- arguments[4].get(), (PrimitiveObjectInspector) argumentsOI[5]);
- String userAgent = PrimitiveObjectInspectorUtils.getString(
- arguments[5].get(), (PrimitiveObjectInspector) argumentsOI[6]);
-
- Map<String, String> xAnalyticsMap = new HashMap<String, String>();
-
- if (checkForXAnalytics) {
- Map<?, ?> xAnalyticsPreMap = ((MapObjectInspector)
argumentsOI[7]).getMap(arguments[7]);
-
-
- if (xAnalyticsPreMap != null) {
-
- for (Entry<?, ?> r : xAnalyticsMap.entrySet()) {
- xAnalyticsMap.put((String) r.getKey(), (String)
r.getValue());
-
- }
- }
- }
+public class IsPageviewUDF extends UDF {
+ public boolean evaluate(
+ String uriHost,
+ String uriPath,
+ String uriQuery,
+ String httpStatus,
+ String contentType,
+ String userAgent
+ ) {
+ PageviewDefinition pageviewDefinitionInstance =
PageviewDefinition.getInstance();
return pageviewDefinitionInstance.isPageview(
- uriHost,
- uriPath,
- uriQuery,
- httpStatus,
- contentType,
- userAgent,
- xAnalyticsMap
+ uriHost,
+ uriPath,
+ uriQuery,
+ httpStatus,
+ contentType,
+ userAgent
);
- }
-
-
- @Override
- public String getDisplayString(String[] arguments) {
- return "isPageView(" + arguments.toString() + ")";
- }
-
-
- //these two are package protected in GenericUDF.java but are real useful
-
- protected void checkArgsSize(ObjectInspector[] arguments, int min, int max)
- throws UDFArgumentLengthException {
- if (arguments.length < min || arguments.length > max) {
- StringBuilder sb = new StringBuilder();
- sb.append(getFuncName());
- sb.append(" requires ");
- if (min == max) {
- sb.append(min);
- } else {
- sb.append(min).append("..").append(max);
- }
- sb.append(" argument(s), got ");
- sb.append(arguments.length);
- throw new UDFArgumentLengthException(sb.toString());
- }
- }
-
- protected void checkArgPrimitive(ObjectInspector[] arguments, int i)
- throws UDFArgumentTypeException {
- ObjectInspector.Category oiCat = arguments[i].getCategory();
- if (oiCat != ObjectInspector.Category.PRIMITIVE) {
- throw new UDFArgumentTypeException(i, getFuncName() + " Argument
should be of primitive type");
- }
- }
-
- protected String getFuncName() {
- return
- getClass().getSimpleName().substring(10).toLowerCase();
}
}
\ No newline at end of file
diff --git
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsAppPageviewUDF.java
b/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsAppPageviewUDF.java
index 8fc2e6d..3b93b0b 100644
---
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsAppPageviewUDF.java
+++
b/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsAppPageviewUDF.java
@@ -15,16 +15,13 @@
*/
package org.wikimedia.analytics.refinery.hive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.assertEquals;
+
import junitparams.FileParameters;
import junitparams.JUnitParamsRunner;
import junitparams.mappers.CsvWithHeaderMapper;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
@RunWith(JUnitParamsRunner.class)
public class TestIsAppPageviewUDF {
@@ -34,7 +31,7 @@
value = "../refinery-core/src/test/resources/pageview_test_data.csv",
mapper = CsvWithHeaderMapper.class
)
- public void testIsAppPageviewNoxAnalytics(
+ public void testIsAppPageview(
String test_description,
String project,
String dialect,
@@ -53,17 +50,14 @@
) {
IsAppPageviewUDF udf = new IsAppPageviewUDF();
- Map<String,String> xAnalyticsMap = new HashMap<String,String>();
-
assertEquals(
test_description,
is_app_pageview,
- udf.isPageview(
+ udf.evaluate(
uri_path,
uri_query,
content_type,
- user_agent,
- xAnalyticsMap
+ user_agent
)
);
}
diff --git
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDF.java
b/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDF.java
index 5b820b2..bcefdcc 100644
---
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDF.java
+++
b/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDF.java
@@ -15,40 +15,23 @@
*/
package org.wikimedia.analytics.refinery.hive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import static org.junit.Assert.assertEquals;
+
import junitparams.FileParameters;
import junitparams.JUnitParamsRunner;
import junitparams.mappers.CsvWithHeaderMapper;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
@RunWith(JUnitParamsRunner.class)
public class TestIsPageviewUDF {
- IsPageviewUDF udf = null;
- JSONParser parser = null;
- @Before
- public void setUp() throws HiveException{
- udf = new IsPageviewUDF();
- parser = new JSONParser();
-
- }
@Test
@FileParameters(
value = "../refinery-core/src/test/resources/pageview_test_data.csv",
mapper = CsvWithHeaderMapper.class
)
- // this mapper cannot deal with reading strings formed like
- // the x analytics map: "{"WMF-Last-Access":"12-Aug-2015","https":"1"}
public void testIsPageview(
String test_description,
String project,
@@ -65,52 +48,20 @@
String http_status,
String content_type,
String user_agent
- ){
-
- Map<String, String> xAnalyticsMap = new HashMap<String, String>();
+ ) {
+ IsPageviewUDF udf = new IsPageviewUDF();
assertEquals(
test_description,
is_pageview,
- udf.isPageview(
+ udf.evaluate(
uri_host,
uri_path,
uri_query,
http_status,
content_type,
- user_agent,
- xAnalyticsMap
-
+ user_agent
)
);
}
-
- @Test
- public void testIsPageviewXAnalyticsPreview(
-
- ){
- String uri_host = "en.wikipedia";
- String uri_path = "/wiki/Horseshoe%20crab#anchor"; ;
- String uri_query = "-";
- String http_status = "200";
- String content_type = "text/html";
- String user_agent = "turnip/";
-
- Map<String, String> xAnalyticsMap = new HashMap<String, String>();
-
- xAnalyticsMap.put("preview", "1");
-
- assertTrue("Preview requests are not pageviews", udf.isPageview(
- uri_host,
- uri_path,
- uri_query,
- http_status,
- content_type,
- user_agent,
- xAnalyticsMap
-
- ) == false);
- }
-
-
}
\ No newline at end of file
diff --git
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDFArgumentHandling.java
b/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDFArgumentHandling.java
deleted file mode 100644
index d5b4fe4..0000000
---
a/refinery-hive/src/test/java/org/wikimedia/analytics/refinery/hive/TestIsPageviewUDFArgumentHandling.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.wikimedia.analytics.refinery.hive;
-
-import junitparams.JUnitParamsRunner;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Created by nuria on 9/8/15.
- * Tests that isPageview UDF can handle a variable number of arguments
- * and generalerrors in argument setting
- */
-@RunWith(JUnitParamsRunner.class)
-public class TestIsPageviewUDFArgumentHandling {
-
-
- IsPageviewUDF udf = null;
- JSONParser parser = null;
-
- @Before
- public void setUp() throws HiveException{
- udf = new IsPageviewUDF();
- parser = new JSONParser();
-
- }
-
- @Test(expected = UDFArgumentLengthException.class)
- public void testBadNumberOfArgumentsTooFew() throws HiveException{
-
- ObjectInspector value1 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value2 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector[] initArgumentsFew = new ObjectInspector[]{value1,
value2};
- udf.initialize(initArgumentsFew);
- }
-
-
- @Test(expected = UDFArgumentLengthException.class)
- public void testBadNumberOfArgumentsTooMany() throws HiveException{
-
- ObjectInspector value1 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value2 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector[] initArgumentsTooMany = new ObjectInspector[]{value1,
value2, value1, value2, value1, value2, value1, value2};
- udf.initialize(initArgumentsTooMany);
- }
-
- @Test(expected = UDFArgumentException.class)
- public void testBadArgumentType() throws HiveException{
-
- // the 7th argument should be a map not a string
- ObjectInspector value1 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value2 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector[] initArguments = new ObjectInspector[]{value1,
value2, value1, value2, value1, value2, value1};
- udf.initialize(initArguments);
- }
-
- // UDF should work with variable arguments
- public void testGoodNumberOfArguments() throws HiveException{
-
- ObjectInspector value1 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value2 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value3 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value4 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value5 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector value6 =
PrimitiveObjectInspectorFactory.javaStringObjectInspector;
-
- ObjectInspector[] initArguments = new ObjectInspector[]{value1,
value2, value3, value4, value5, value6};
- udf.initialize(initArguments);
-
- ObjectInspector value7 =
ObjectInspectorFactory.getStandardMapObjectInspector(
- PrimitiveObjectInspectorFactory.writableStringObjectInspector,
- PrimitiveObjectInspectorFactory.writableIntObjectInspector
- );
-
- ObjectInspector[] initArgumentsMax = new ObjectInspector[]{value1,
value2, value3, value4, value5, value6, value7};
- udf.initialize(initArguments);
-
-
- }
-
-}
--
To view, visit https://gerrit.wikimedia.org/r/237273
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I9f1a7924b8ebf076f970795b562537dc003c44e4
Gerrit-PatchSet: 1
Gerrit-Project: analytics/refinery/source
Gerrit-Branch: master
Gerrit-Owner: Nuria <[email protected]>
Gerrit-Reviewer: Nuria <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits