Add apache beam to registry and open source

This is the initial commit of the new billing system, rewritten as an Apache
Beam pipeline. This contains a basic end-to-end pipeline as proof of concept,
and boilerplate for GenerateInvoicesAction, which will eventually be our
automated invoice generation endpoint.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=174184171
This commit is contained in:
larryruili 2017-11-01 08:39:11 -07:00 committed by jianglai
parent d3254eaaeb
commit eff2266e35
10 changed files with 703 additions and 2 deletions

View file

@ -0,0 +1,32 @@
package(
default_visibility = ["//visibility:public"],
)
licenses(["notice"]) # Apache 2.0
java_library(
name = "billing",
srcs = glob(["*.java"]),
deps = [
"//java/google/registry/request",
"//java/google/registry/request/auth",
"@com_google_dagger",
"@com_google_guava",
"@joda_time",
"@org_apache_beam_runners_google_cloud_dataflow_java",
"@org_apache_beam_sdks_java_core",
],
)
java_binary(
name = "counter",
srcs = ["MinWordCount.java"],
main_class = "google.registry.billing.MinWordCount",
deps = [
"@com_google_dagger",
"@com_google_guava",
"@joda_time",
"@org_apache_beam_runners_google_cloud_dataflow_java",
"@org_apache_beam_sdks_java_core",
],
)

View file

@ -0,0 +1,45 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// 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
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 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.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.billing;
import static google.registry.request.Action.Method.POST;
import google.registry.request.Action;
import google.registry.request.auth.Auth;
import javax.inject.Inject;
/**
* Generates invoices for the month and stores them on GCS.
*
* <p>Currently this is just a stub runner that verifies we can deploy dataflow jobs from App
* Engine.
*/
@Action(
path = GenerateInvoicesAction.PATH,
method = POST,
auth = Auth.AUTH_INTERNAL_ONLY
)
public class GenerateInvoicesAction implements Runnable {
@Inject GenerateInvoicesAction() {}
static final String PATH = "/_dr/task/generateInvoices";
@Override
public void run() {
// MinWordCount minWordCount = new MinWordCount();
// minWordCount.run();
}
}

View file

@ -0,0 +1,42 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// 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
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 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.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.billing;
import org.apache.beam.sdk.transforms.DoFn;
/** A minimal word count, serving as proof of concept for the Beam pipeline. */
public class MinWordCount implements Runnable {
public static void main(String[] args) {
MinWordCount wordCount = new MinWordCount();
wordCount.run();
}
@Override
public void run() {
// This is a stub function for a basic proof-of-concept Beam pipeline.
}
static class ExtractWordsFn extends DoFn<String, String> {
@ProcessElement
public void processElement(ProcessContext c) {
for (String word : c.element().split("[^\\p{L}]+")) {
if (!word.isEmpty()) {
c.output(word);
}
}
}
}
}

View file

@ -57,6 +57,19 @@
<url-pattern>/_dr/task/brdaCopy</url-pattern>
</servlet-mapping>
<!-- Billing -->
<!--
Generates the invoice CSV for the month, which we send to billing to charge
registrars for their registrations.
-->
<servlet-mapping>
<servlet-name>backend-servlet</servlet-name>
<url-pattern>/_dr/task/generateInvoices</url-pattern>
</servlet-mapping>
<!-- ICANN Monthly Reporting -->
<!--
Monthly ICANN transaction and activity reports. This task generates report
files (in CSV format) and stores them in GCS under

View file

@ -11,6 +11,7 @@ java_library(
"//java/google/registry/backup",
"//java/google/registry/batch",
"//java/google/registry/bigquery",
"//java/google/registry/billing",
"//java/google/registry/config",
"//java/google/registry/cron",
"//java/google/registry/dns",

View file

@ -28,6 +28,7 @@ import google.registry.batch.MapreduceEntityCleanupAction;
import google.registry.batch.RefreshDnsOnHostRenameAction;
import google.registry.batch.ResaveAllEppResourcesAction;
import google.registry.batch.VerifyEntityIntegrityAction;
import google.registry.billing.GenerateInvoicesAction;
import google.registry.cron.CommitLogFanoutAction;
import google.registry.cron.CronModule;
import google.registry.cron.TldFanoutAction;
@ -114,6 +115,7 @@ interface BackendRequestComponent {
ExportDomainListsAction exportDomainListsAction();
ExportReservedTermsAction exportReservedTermsAction();
ExportSnapshotAction exportSnapshotAction();
GenerateInvoicesAction generateInvoicesAction();
IcannReportingStagingAction icannReportingStagingAction();
IcannReportingUploadAction icannReportingUploadAction();
LoadSnapshotAction loadSnapshotAction();

View file

@ -29,10 +29,15 @@ def domain_registry_repositories(
omit_com_fasterxml_jackson_core_jackson_databind=False,
omit_com_google_api_client=False,
omit_com_google_api_client_appengine=False,
omit_com_google_api_client_jackson2=False,
omit_com_google_api_client_java6=False,
omit_com_google_api_client_servlet=False,
omit_com_google_apis_google_api_services_admin_directory=False,
omit_com_google_apis_google_api_services_bigquery=False,
omit_com_google_apis_google_api_services_clouddebugger=False,
omit_com_google_apis_google_api_services_cloudkms=False,
omit_com_google_apis_google_api_services_cloudresourcemanager=False,
omit_com_google_apis_google_api_services_dataflow=False,
omit_com_google_apis_google_api_services_dns=False,
omit_com_google_apis_google_api_services_drive=False,
omit_com_google_apis_google_api_services_groupssettings=False,
@ -48,10 +53,14 @@ def domain_registry_repositories(
omit_com_google_appengine_tools_appengine_mapreduce=False,
omit_com_google_appengine_tools_appengine_pipeline=False,
omit_com_google_appengine_tools_sdk=False,
omit_com_google_auth_library_credentials=False,
omit_com_google_auth_library_oauth2_http=False,
omit_com_google_auto_common=False,
omit_com_google_auto_factory=False,
omit_com_google_auto_service=False,
omit_com_google_auto_value=False,
omit_com_google_cloud_bigdataoss_gcsio=False,
omit_com_google_cloud_bigdataoss_util=False,
omit_com_google_code_findbugs_jsr305=False,
omit_com_google_dagger=False,
omit_com_google_dagger_compiler=False,
@ -81,6 +90,7 @@ def domain_registry_repositories(
omit_com_sun_xml_bind_jaxb_core=False,
omit_com_sun_xml_bind_jaxb_impl=False,
omit_com_sun_xml_bind_jaxb_xjc=False,
omit_com_thoughtworks_paranamer=False,
omit_commons_codec=False,
omit_commons_logging=False,
omit_dnsjava=False,
@ -92,6 +102,13 @@ def domain_registry_repositories(
omit_javax_xml_bind_jaxb_api=False,
omit_joda_time=False,
omit_junit=False,
omit_org_apache_avro=False,
omit_org_apache_beam_runners_google_cloud_dataflow_java=False,
omit_org_apache_beam_sdks_common_runner_api=False,
omit_org_apache_beam_sdks_java_core=False,
omit_org_apache_beam_sdks_java_extensions_google_cloud_platform_core=False,
omit_org_apache_beam_sdks_java_io_google_cloud_platform=False,
omit_org_apache_commons_compress=False,
omit_org_apache_ftpserver_core=False,
omit_org_apache_httpcomponents_httpclient=False,
omit_org_apache_httpcomponents_httpcore=False,
@ -101,16 +118,25 @@ def domain_registry_repositories(
omit_org_bouncycastle_bcpg_jdk15on=False,
omit_org_bouncycastle_bcpkix_jdk15on=False,
omit_org_bouncycastle_bcprov_jdk15on=False,
omit_org_codehaus_jackson_core_asl=False,
omit_org_codehaus_jackson_mapper_asl=False,
omit_org_hamcrest_all=False,
omit_org_hamcrest_core=False,
omit_org_hamcrest_library=False,
omit_org_joda_money=False,
omit_org_json=False,
omit_org_khronos_opengl_api=False,
omit_org_mockito_all=False,
omit_org_mortbay_jetty=False,
omit_org_mortbay_jetty_servlet_api=False,
omit_org_mortbay_jetty_util=False,
omit_org_osgi_core=False,
omit_org_slf4j_api=False,
omit_org_yaml_snakeyaml=False):
omit_org_tukaani_xz=False,
omit_org_xerial_snappy_java=False,
omit_org_yaml_snakeyaml=False,
omit_xerces_xmlParserAPIs=False,
omit_xpp3=False,):
"""Imports dependencies for Nomulus."""
domain_registry_bazel_check()
if not omit_com_beust_jcommander:
@ -127,14 +153,24 @@ def domain_registry_repositories(
com_google_api_client()
if not omit_com_google_api_client_appengine:
com_google_api_client_appengine()
if not omit_com_google_api_client_jackson2:
com_google_api_client_jackson2()
if not omit_com_google_api_client_java6:
com_google_api_client_java6()
if not omit_com_google_api_client_servlet:
com_google_api_client_servlet()
if not omit_com_google_apis_google_api_services_admin_directory:
com_google_apis_google_api_services_admin_directory()
if not omit_com_google_apis_google_api_services_bigquery:
com_google_apis_google_api_services_bigquery()
if not omit_com_google_apis_google_api_services_clouddebugger:
com_google_apis_google_api_services_clouddebugger()
if not omit_com_google_apis_google_api_services_cloudkms:
com_google_apis_google_api_services_cloudkms()
if not omit_com_google_apis_google_api_services_cloudresourcemanager:
com_google_apis_google_api_services_cloudresourcemanager()
if not omit_com_google_apis_google_api_services_dataflow:
com_google_apis_google_api_services_dataflow()
if not omit_com_google_apis_google_api_services_dns:
com_google_apis_google_api_services_dns()
if not omit_com_google_apis_google_api_services_drive:
@ -165,6 +201,10 @@ def domain_registry_repositories(
com_google_appengine_tools_appengine_pipeline()
if not omit_com_google_appengine_tools_sdk:
com_google_appengine_tools_sdk()
if not omit_com_google_auth_library_credentials:
com_google_auth_library_credentials()
if not omit_com_google_auth_library_oauth2_http:
com_google_auth_library_oauth2_http()
if not omit_com_google_auto_common:
com_google_auto_common()
if not omit_com_google_auto_factory:
@ -173,6 +213,10 @@ def domain_registry_repositories(
com_google_auto_service()
if not omit_com_google_auto_value:
com_google_auto_value()
if not omit_com_google_cloud_bigdataoss_gcsio:
com_google_cloud_bigdataoss_gcsio()
if not omit_com_google_cloud_bigdataoss_util:
com_google_cloud_bigdataoss_util()
if not omit_com_google_code_findbugs_jsr305:
com_google_code_findbugs_jsr305()
if not omit_com_google_dagger:
@ -231,6 +275,8 @@ def domain_registry_repositories(
com_sun_xml_bind_jaxb_impl()
if not omit_com_sun_xml_bind_jaxb_xjc:
com_sun_xml_bind_jaxb_xjc()
if not omit_com_thoughtworks_paranamer:
com_thoughtworks_paranamer()
if not omit_commons_codec:
commons_codec()
if not omit_commons_logging:
@ -253,6 +299,20 @@ def domain_registry_repositories(
joda_time()
if not omit_junit:
junit()
if not omit_org_apache_avro:
org_apache_avro()
if not omit_org_apache_beam_runners_google_cloud_dataflow_java:
org_apache_beam_runners_google_cloud_dataflow_java()
if not omit_org_apache_beam_sdks_common_runner_api:
org_apache_beam_sdks_common_runner_api()
if not omit_org_apache_beam_sdks_java_core:
org_apache_beam_sdks_java_core()
if not omit_org_apache_beam_sdks_java_extensions_google_cloud_platform_core:
org_apache_beam_sdks_java_extensions_google_cloud_platform_core()
if not omit_org_apache_beam_sdks_java_io_google_cloud_platform:
org_apache_beam_sdks_java_io_google_cloud_platform()
if not omit_org_apache_commons_compress:
org_apache_commons_compress()
if not omit_org_apache_ftpserver_core:
org_apache_ftpserver_core()
if not omit_org_apache_httpcomponents_httpclient:
@ -271,6 +331,12 @@ def domain_registry_repositories(
org_bouncycastle_bcpkix_jdk15on()
if not omit_org_bouncycastle_bcprov_jdk15on:
org_bouncycastle_bcprov_jdk15on()
if not omit_org_codehaus_jackson_core_asl:
org_codehaus_jackson_core_asl()
if not omit_org_codehaus_jackson_mapper_asl:
org_codehaus_jackson_mapper_asl()
if not omit_org_hamcrest_all:
org_hamcrest_all()
if not omit_org_hamcrest_core:
org_hamcrest_core()
if not omit_org_hamcrest_library:
@ -279,6 +345,8 @@ def domain_registry_repositories(
org_joda_money()
if not omit_org_json:
org_json()
if not omit_org_khronos_opengl_api:
org_khronos_opengl_api()
if not omit_org_mockito_all:
org_mockito_all()
if not omit_org_mortbay_jetty:
@ -287,10 +355,20 @@ def domain_registry_repositories(
org_mortbay_jetty_servlet_api()
if not omit_org_mortbay_jetty_util:
org_mortbay_jetty_util()
if not omit_org_osgi_core:
org_osgi_core()
if not omit_org_slf4j_api:
org_slf4j_api()
if not omit_org_tukaani_xz:
org_tukaani_xz()
if not omit_org_xerial_snappy_java:
org_xerial_snappy_java()
if not omit_org_yaml_snakeyaml:
org_yaml_snakeyaml()
if not omit_xerces_xmlParserAPIs:
xerces_xmlParserAPIs()
if not omit_xpp3:
xpp3()
def com_beust_jcommander():
java_import_external(
@ -1285,6 +1363,18 @@ def com_sun_xml_bind_jaxb_xjc():
]),
)
def com_thoughtworks_paranamer():
java_import_external(
name = "com_thoughtworks_paranamer",
jar_sha256 = "63e3f53f8f70784b65c25b2ee475813979d6d0e7f7b2510b364c4e1f4a803ccc",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.7/paranamer-2.7.jar",
"http://repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.7/paranamer-2.7.jar",
"http://maven.ibiblio.org/maven2/com/thoughtworks/paranamer/paranamer/2.7/paranamer-2.7.jar",
],
licenses = ["notice"], # BSD
)
def commons_codec():
java_import_external(
name = "commons_codec",
@ -1411,6 +1501,61 @@ def junit():
deps = ["@org_hamcrest_core"],
)
def org_apache_avro():
java_import_external(
name = "org_apache_avro",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "f754a0830ce67a5a9fa67a54ec15d103ef15e1c850d7b26faf7b647eeddc82d3",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/org/apache/avro/avro/1.8.2/avro-1.8.2.jar",
"http://repo1.maven.org/maven2/org/apache/avro/avro/1.8.2/avro-1.8.2.jar",
],
deps = [
"@org_codehaus_jackson_core_asl",
"@org_codehaus_jackson_mapper_asl",
"@com_thoughtworks_paranamer",
"@org_xerial_snappy_java",
"@org_apache_commons_compress",
"@org_tukaani_xz",
"@org_slf4j_api",
],
)
def org_apache_beam_sdks_java_core():
java_import_external(
name = "org_apache_beam_sdks_java_core",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "26beb110b6ef8e8bec729c44960c17581c18542216e9e0e6546d3592be7cd2e0",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/org/apache/beam/beam-sdks-java-core/2.1.0/beam-sdks-java-core-2.1.0.jar",
"http://repo1.maven.org/maven2/org/apache/beam/beam-sdks-java-core/2.1.0/beam-sdks-java-core-2.1.0.jar",
],
deps = [
"@com_google_code_findbugs_jsr305",
"@com_fasterxml_jackson_core",
"@com_fasterxml_jackson_core_jackson_annotations",
"@com_fasterxml_jackson_core_jackson_databind",
"@org_slf4j_api",
"@org_apache_avro",
"@org_xerial_snappy_java",
"@joda_time",
"@com_google_auto_value",
"@org_hamcrest_all",
],
)
def org_apache_commons_compress():
java_import_external(
name = "org_apache_commons_compress",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "5fca136503f86ecc6cb61fbd17b137d59e56b45c7a5494e6b8fd3cabd4697fbd",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar",
"http://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar",
"http://maven.ibiblio.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar",
],
)
def org_apache_ftpserver_core():
java_import_external(
name = "org_apache_ftpserver_core",
@ -1527,6 +1672,44 @@ def org_bouncycastle_bcprov_jdk15on():
licenses = ["notice"], # Bouncy Castle Licence
)
def org_codehaus_jackson_core_asl():
java_import_external(
name = "org_codehaus_jackson_core_asl",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "440a9cb5ca95b215f953d3a20a6b1a10da1f09b529a9ddea5f8a4905ddab4f5a",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/maven.ibiblio.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar",
"http://maven.ibiblio.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar",
"http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar",
],
)
def org_codehaus_jackson_mapper_asl():
java_import_external(
name = "org_codehaus_jackson_mapper_asl",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "74e7a07a76f2edbade29312a5a2ebccfa019128bc021ece3856d76197e9be0c2",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/maven.ibiblio.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar",
"http://maven.ibiblio.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar",
"http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar",
],
deps = ["@org_codehaus_jackson_core_asl"],
)
def org_hamcrest_all():
java_import_external(
name = "org_hamcrest_all",
neverlink = 1,
licenses = ["notice"], # New BSD License
jar_sha256 = "4877670629ab96f34f5f90ab283125fcd9acb7e683e66319a68be6eb2cca60de",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar",
"http://repo1.maven.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar",
"http://maven.ibiblio.org/maven2/org/hamcrest/hamcrest-all/1.3/hamcrest-all-1.3.jar",
],
)
def org_hamcrest_core():
java_import_external(
name = "org_hamcrest_core",
@ -1536,7 +1719,7 @@ def org_hamcrest_core():
"http://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar",
],
licenses = ["notice"], # New BSD License
testonly_ = True,
#testonly_ = True,
)
def org_hamcrest_library():
@ -1632,6 +1815,19 @@ def org_mortbay_jetty_util():
deps = ["@org_mortbay_jetty_servlet_api"],
)
def org_osgi_core():
java_import_external(
name = "org_osgi_core",
neverlink = 1,
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "76c1f055f04987d1dc59f3efea30e548376ef7b9dadf2256b3f39600855541ab",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/maven.ibiblio.org/maven2/org/osgi/org.osgi.core/4.3.0/org.osgi.core-4.3.0.jar",
"http://maven.ibiblio.org/maven2/org/osgi/org.osgi.core/4.3.0/org.osgi.core-4.3.0.jar",
"http://repo1.maven.org/maven2/org/osgi/org.osgi.core/4.3.0/org.osgi.core-4.3.0.jar",
],
)
def org_slf4j_api():
java_import_external(
name = "org_slf4j_api",
@ -1643,6 +1839,30 @@ def org_slf4j_api():
licenses = ["notice"], # MIT License
)
def org_tukaani_xz():
java_import_external(
name = "org_tukaani_xz",
licenses = ["unencumbered"], # Public Domain
jar_sha256 = "86f30fa8775fa3a62cdb39d1ed78a6019164c1058864048d42cbee244e26e840",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/maven.ibiblio.org/maven2/org/tukaani/xz/1.5/xz-1.5.jar",
"http://maven.ibiblio.org/maven2/org/tukaani/xz/1.5/xz-1.5.jar",
"http://repo1.maven.org/maven2/org/tukaani/xz/1.5/xz-1.5.jar",
],
)
def org_xerial_snappy_java():
java_import_external(
name = "org_xerial_snappy_java",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "18563b50e6691b37ab9428ef639a0f66def91337b3c0d9b3dcf20b0dd7ae78ba",
jar_urls = [
"http://domain-registry-maven.storage.googleapis.com/repo1.maven.org/maven2/org/xerial/snappy/snappy-java/1.1.4-M3/snappy-java-1.1.4-M3.jar",
"http://repo1.maven.org/maven2/org/xerial/snappy/snappy-java/1.1.4-M3/snappy-java-1.1.4-M3.jar",
],
deps = ["@org_osgi_core"],
)
def org_yaml_snakeyaml():
java_import_external(
name = "org_yaml_snakeyaml",
@ -1654,7 +1874,283 @@ def org_yaml_snakeyaml():
],
)
def com_google_api_client_jackson2():
java_import_external(
name = "com_google_api_client_jackson2",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "b86e3bdd3b6504741b90de51f06b2236cedfedd0069f942b22adb0b60553de4a",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/api-client/google-api-client-jackson2/1.20.0/google-api-client-jackson2-1.20.0.jar",
"http://repo1.maven.org/maven2/com/google/api-client/google-api-client-jackson2/1.20.0/google-api-client-jackson2-1.20.0.jar",
],
deps = [
"@com_google_api_client",
"@com_google_http_client_jackson2",
],
)
def com_google_api_client_java6():
java_import_external(
name = "com_google_api_client_java6",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "df4f423f33f467d248e51deb555404771f7bc41430b2d4d1e49966c79c0b207b",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/api-client/google-api-client-java6/1.20.0/google-api-client-java6-1.20.0.jar",
"http://repo1.maven.org/maven2/com/google/api-client/google-api-client-java6/1.20.0/google-api-client-java6-1.20.0.jar",
],
deps = [
"@com_google_api_client",
"@com_google_oauth_client_java6",
],
)
def com_google_apis_google_api_services_clouddebugger():
java_import_external(
name = "com_google_apis_google_api_services_clouddebugger",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "5b8dddc70bb63aa373dcf1dc35ec79444c5feb77417b3f83ebe30ec1e9305e47",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/apis/google-api-services-clouddebugger/v2-rev8-1.22.0/google-api-services-clouddebugger-v2-rev8-1.22.0.jar",
"http://repo1.maven.org/maven2/com/google/apis/google-api-services-clouddebugger/v2-rev8-1.22.0/google-api-services-clouddebugger-v2-rev8-1.22.0.jar",
],
deps = ["@com_google_api_client"],
)
def com_google_apis_google_api_services_cloudresourcemanager():
java_import_external(
name = "com_google_apis_google_api_services_cloudresourcemanager",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "88ebb190d354afaa26f6dc1739e8c713ca2591131d72fe7bb14e670b3f23cacb",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/apis/google-api-services-cloudresourcemanager/v1-rev6-1.22.0/google-api-services-cloudresourcemanager-v1-rev6-1.22.0.jar",
"http://repo1.maven.org/maven2/com/google/apis/google-api-services-cloudresourcemanager/v1-rev6-1.22.0/google-api-services-cloudresourcemanager-v1-rev6-1.22.0.jar",
],
deps = ["@com_google_api_client"],
)
def com_google_apis_google_api_services_dataflow():
java_import_external(
name = "com_google_apis_google_api_services_dataflow",
licenses = ["notice"], # The Apache Software License, Version 2.0
jar_sha256 = "c990c200a48fec60cf11dc146c49ca2f6e865748b0f900ab32fcb4b3341d8f38",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/apis/google-api-services-dataflow/v1b3-rev196-1.22.0/google-api-services-dataflow-v1b3-rev196-1.22.0.jar",
"http://repo1.maven.org/maven2/com/google/apis/google-api-services-dataflow/v1b3-rev196-1.22.0/google-api-services-dataflow-v1b3-rev196-1.22.0.jar",
],
deps = ["@com_google_api_client"],
)
def com_google_auth_library_credentials():
java_import_external(
name = "com_google_auth_library_credentials",
licenses = ["notice"], # BSD New license
jar_sha256 = "df13b1a2d547816e1eaf0cb73c34b85e09a725540f186eb1519de73b15489e9d",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/auth/google-auth-library-credentials/0.7.1/google-auth-library-credentials-0.7.1.jar",
"http://repo1.maven.org/maven2/com/google/auth/google-auth-library-credentials/0.7.1/google-auth-library-credentials-0.7.1.jar",
],
)
def com_google_auth_library_oauth2_http():
java_import_external(
name = "com_google_auth_library_oauth2_http",
licenses = ["notice"], # BSD New license
jar_sha256 = "abc33ebd2411e928f85383b7bd6f33f8ab59dd95d67d363b5af090ffd6adbd98",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.7.1/google-auth-library-oauth2-http-0.7.1.jar",
"http://repo1.maven.org/maven2/com/google/auth/google-auth-library-oauth2-http/0.7.1/google-auth-library-oauth2-http-0.7.1.jar",
],
deps = [
"@com_google_auth_library_credentials",
"@com_google_http_client",
"@com_google_http_client_jackson2",
"@com_google_guava",
],
)
def com_google_cloud_bigdataoss_gcsio():
java_import_external(
name = "com_google_cloud_bigdataoss_gcsio",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "8ef468b82542ae8d0428b0c60eb6009bf05f2b80e34715ee6bb27c5def66b5be",
jar_urls = [
"http://maven.ibiblio.org/maven2/com/google/cloud/bigdataoss/gcsio/1.4.5/gcsio-1.4.5.jar",
"http://repo1.maven.org/maven2/com/google/cloud/bigdataoss/gcsio/1.4.5/gcsio-1.4.5.jar",
],
deps = [
"@com_google_api_client_java6",
"@com_google_api_client_jackson2",
"@com_google_apis_google_api_services_storage",
"@com_google_code_findbugs_jsr305",
"@com_google_guava",
"@com_google_oauth_client",
"@com_google_oauth_client_java6",
#"@junit",
"@org_slf4j_api",
"@com_google_cloud_bigdataoss_util",
],
)
def com_google_cloud_bigdataoss_util():
java_import_external(
name = "com_google_cloud_bigdataoss_util",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "56c93d9cf72a2725c45c6d26530c7065900a7c962ec8f7c0edc5f4164652753d",
jar_urls = [
"http://repo1.maven.org/maven2/com/google/cloud/bigdataoss/util/1.4.5/util-1.4.5.jar",
"http://maven.ibiblio.org/maven2/com/google/cloud/bigdataoss/util/1.4.5/util-1.4.5.jar",
],
deps = [
"@com_google_api_client_java6",
"@com_google_api_client_jackson2",
"@com_google_apis_google_api_services_storage",
"@com_google_code_findbugs_jsr305",
"@com_google_guava",
"@com_google_oauth_client",
"@com_google_oauth_client_java6",
#"@junit",
"@org_slf4j_api",
],
)
def org_apache_beam_runners_google_cloud_dataflow_java():
java_import_external(
name = "org_apache_beam_runners_google_cloud_dataflow_java",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "244e9adee402aa6b56fd29bc358db16c5f027d0d9c9677960f0c64d8f27ed1f1",
jar_urls = [
"http://repo1.maven.org/maven2/org/apache/beam/beam-runners-google-cloud-dataflow-java/2.1.0/beam-runners-google-cloud-dataflow-java-2.1.0.jar",
"http://maven.ibiblio.org/maven2/org/apache/beam/beam-runners-google-cloud-dataflow-java/2.1.0/beam-runners-google-cloud-dataflow-java-2.1.0.jar",
],
deps = [
"@org_apache_beam_sdks_java_core",
"@org_apache_beam_sdks_java_extensions_google_cloud_platform_core",
"@org_apache_beam_sdks_common_runner_api",
"@org_apache_beam_sdks_java_io_google_cloud_platform",
"@com_google_api_client",
"@com_google_http_client",
"@com_google_http_client_jackson2",
"@com_google_apis_google_api_services_dataflow",
"@com_google_apis_google_api_services_clouddebugger",
"@com_google_apis_google_api_services_storage",
"@com_google_auth_library_credentials",
"@com_google_auth_library_oauth2_http",
"@com_google_cloud_bigdataoss_util",
"@org_apache_avro",
"@joda_time",
"@com_google_code_findbugs_jsr305",
"@com_fasterxml_jackson_core",
"@com_fasterxml_jackson_core_jackson_annotations",
"@com_fasterxml_jackson_core_jackson_databind",
"@org_slf4j_api",
"@com_google_auto_value",
"@org_hamcrest_all",
#"@junit",
],
)
def org_apache_beam_sdks_common_runner_api():
java_import_external(
name = "org_apache_beam_sdks_common_runner_api",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "8af98f525b86bd8efc6c25f0008573c877b040b04d9e4b3284d12c86e12c7593",
jar_urls = [
"http://repo1.maven.org/maven2/org/apache/beam/beam-sdks-common-runner-api/2.1.0/beam-sdks-common-runner-api-2.1.0.jar",
"http://maven.ibiblio.org/maven2/org/apache/beam/beam-sdks-common-runner-api/2.1.0/beam-sdks-common-runner-api-2.1.0.jar",
],
)
def org_apache_beam_sdks_java_extensions_google_cloud_platform_core():
java_import_external(
name = "org_apache_beam_sdks_java_extensions_google_cloud_platform_core",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "89cc7f65ef9f446f60145f17da32d454196a2771282823aa732d2bdd5b3b39c9",
jar_urls = [
"http://repo1.maven.org/maven2/org/apache/beam/beam-sdks-java-extensions-google-cloud-platform-core/2.1.0/beam-sdks-java-extensions-google-cloud-platform-core-2.1.0.jar",
"http://maven.ibiblio.org/maven2/org/apache/beam/beam-sdks-java-extensions-google-cloud-platform-core/2.1.0/beam-sdks-java-extensions-google-cloud-platform-core-2.1.0.jar",
],
deps = [
"@org_apache_beam_sdks_java_core",
"@com_google_http_client_jackson2",
"@com_google_auth_library_oauth2_http",
"@com_google_api_client",
"@com_google_cloud_bigdataoss_gcsio",
"@com_google_cloud_bigdataoss_util",
"@com_google_apis_google_api_services_cloudresourcemanager",
"@com_google_apis_google_api_services_storage",
"@com_google_auth_library_credentials",
"@com_google_code_findbugs_jsr305",
"@com_google_http_client",
"@org_slf4j_api",
"@joda_time",
"@com_fasterxml_jackson_core_jackson_annotations",
"@com_fasterxml_jackson_core_jackson_databind",
"@com_google_auto_value",
"@org_hamcrest_all",
#"@junit",
],
)
def org_apache_beam_sdks_java_io_google_cloud_platform():
java_import_external(
name = "org_apache_beam_sdks_java_io_google_cloud_platform",
licenses = ["notice"], # Apache License, Version 2.0
jar_sha256 = "a1a502fd7b960859d4ec50de1f4b55927b32a5e9583a7b40371110c3d6a4f297",
jar_urls = [
"http://maven.ibiblio.org/maven2/org/apache/beam/beam-sdks-java-io-google-cloud-platform/2.1.0/beam-sdks-java-io-google-cloud-platform-2.1.0.jar",
"http://repo1.maven.org/maven2/org/apache/beam/beam-sdks-java-io-google-cloud-platform/2.1.0/beam-sdks-java-io-google-cloud-platform-2.1.0.jar",
],
deps = [
"@org_apache_beam_sdks_java_extensions_google_cloud_platform_core",
"@com_fasterxml_jackson_core_jackson_databind",
"@com_google_api_client",
"@com_google_http_client_jackson2",
"@com_google_auth_library_oauth2_http",
"@com_google_guava",
"@com_google_code_findbugs_jsr305",
"@org_apache_avro",
#"@junit",
],
)
def org_khronos_opengl_api():
java_import_external(
name = "org_khronos_opengl_api",
licenses = ["notice"], # Apache 2.0
jar_sha256 = "cc08393220f706ef9299b453cd88f741382cee49dbeea2c667b4be1435768145",
jar_urls = [
"http://repo1.maven.org/maven2/org/khronos/opengl-api/gl1.1-android-2.1_r1/opengl-api-gl1.1-android-2.1_r1.jar",
"http://maven.ibiblio.org/maven2/org/khronos/opengl-api/gl1.1-android-2.1_r1/opengl-api-gl1.1-android-2.1_r1.jar",
],
)
def xerces_xmlParserAPIs():
java_import_external(
name = "xerces_xmlParserAPIs",
licenses = ["TODO"], # NO LICENSE DECLARED
jar_sha256 = "1c2867be1faa73c67e9232631241eb1df4cd0763048646e7bb575a9980e9d7e5",
jar_urls = [
"http://repo1.maven.org/maven2/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar",
"http://maven.ibiblio.org/maven2/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar",
],
)
def xpp3():
java_import_external(
name = "xpp3",
# Indiana University Extreme! Lab Software License, vesion 1.1.1
# http://www.extreme.indiana.edu/viewcvs/~checkout~/XPP3/java/LICENSE.txt
# Public Domain
# http://creativecommons.org/licenses/publicdomain
# Apache Software License, version 1.1
# http://www.apache.org/licenses/LICENSE-1.1
licenses = ["TODO"],
jar_sha256 = "0341395a481bb887803957145a6a37879853dd625e9244c2ea2509d9bb7531b9",
jar_urls = [
"http://maven.ibiblio.org/maven2/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar",
"http://repo1.maven.org/maven2/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar",
],
)
def _check_bazel_version(project, bazel_version):
if "bazel_version" not in dir(native):

View file

@ -0,0 +1,31 @@
package(
default_testonly = 1,
default_visibility = ["//java/google/registry:registry_project"],
)
licenses(["notice"]) # Apache 2.0
load("//java/com/google/testing/builddefs:GenTestRules.bzl", "GenTestRules")
java_library(
name = "billing",
srcs = glob(["*.java"]),
deps = [
"//java/google/registry/billing",
"@com_google_dagger",
"@com_google_guava",
"@com_google_truth",
"@com_google_truth_extensions_truth_java8_extension",
"@joda_time",
"@junit",
"@org_apache_beam_runners_google_cloud_dataflow_java",
"@org_apache_beam_sdks_java_core",
],
)
GenTestRules(
name = "GeneratedTestRules",
default_test_size = "small",
test_files = glob(["*Test.java"]),
deps = [":billing"],
)

View file

@ -0,0 +1,38 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// 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
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 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.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.billing;
import static com.google.common.truth.Truth.assertThat;
import google.registry.billing.MinWordCount.ExtractWordsFn;
import java.util.List;
import org.apache.beam.sdk.transforms.DoFnTester;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/** Unit tests for {@link MinWordCount}*/
@RunWith(JUnit4.class)
public class MinWordCountTest {
@Test
public void testDebuggingWordCount() throws Exception {
ExtractWordsFn extractWordsFn = new ExtractWordsFn();
DoFnTester<String, String> fntester = DoFnTester.of(extractWordsFn);
String testInput = "hi there\nwhats up\nim good thanks";
List<String> outputs = fntester.processBundle(testInput);
assertThat(outputs).containsExactly("hi", "there", "whats", "up", "im", "good", "thanks");
}
}

View file

@ -14,6 +14,7 @@ PATH CLASS METHOD
/_dr/task/exportDomainLists ExportDomainListsAction POST n INTERNAL APP IGNORED
/_dr/task/exportReservedTerms ExportReservedTermsAction POST n INTERNAL APP IGNORED
/_dr/task/exportSnapshot ExportSnapshotAction POST y INTERNAL APP IGNORED
/_dr/task/generateInvoices GenerateInvoicesAction POST n INTERNAL APP IGNORED
/_dr/task/icannReportingStaging IcannReportingStagingAction POST n INTERNAL APP IGNORED
/_dr/task/icannReportingUpload IcannReportingUploadAction POST n INTERNAL,API APP ADMIN
/_dr/task/importRdeContacts RdeContactImportAction GET n INTERNAL APP IGNORED