gooddata-edge 0.6.27.edge
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.rubocop.yml +89 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +196 -0
- data/CLI.md +439 -0
- data/DEPENDENCIES.md +817 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +75 -0
- data/Rakefile +179 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/dependency_decisions.yml +104 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +63 -0
- data/lib/gooddata.rb +31 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +38 -0
- data/lib/gooddata/bricks/bricks.rb +15 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +32 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
- data/lib/gooddata/cli/hooks.rb +57 -0
- data/lib/gooddata/cli/shared.rb +61 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +175 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +23 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/no_project_error.rb +15 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +15 -0
- data/lib/gooddata/extensions/hash.rb +38 -0
- data/lib/gooddata/extensions/nil.rb +15 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +27 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +15 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +116 -0
- data/lib/gooddata/helpers/global_helpers.rb +331 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +77 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
- data/lib/gooddata/mixins/md_object_query.rb +128 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +43 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
- data/lib/gooddata/models/client.rb +182 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/datawarehouse.rb +92 -0
- data/lib/gooddata/models/domain.rb +479 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +160 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +272 -0
- data/lib/gooddata/models/metadata/attribute.rb +134 -0
- data/lib/gooddata/models/metadata/dashboard.rb +108 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +64 -0
- data/lib/gooddata/models/metadata/dimension.rb +54 -0
- data/lib/gooddata/models/metadata/fact.rb +44 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +198 -0
- data/lib/gooddata/models/metadata/report.rb +247 -0
- data/lib/gooddata/models/metadata/report_definition.rb +264 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +91 -0
- data/lib/gooddata/models/model.rb +282 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/process.rb +316 -0
- data/lib/gooddata/models/profile.rb +426 -0
- data/lib/gooddata/models/project.rb +1514 -0
- data/lib/gooddata/models/project_creator.rb +126 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +266 -0
- data/lib/gooddata/models/schedule.rb +518 -0
- data/lib/gooddata/models/segment.rb +201 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
- data/lib/gooddata/models/user_group.rb +241 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +389 -0
- data/lib/gooddata/rest/connection.rb +765 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +76 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/bricks/bricks_spec.rb +112 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +38 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +63 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/environment/default.rb +41 -0
- data/spec/environment/develop.rb +31 -0
- data/spec/environment/environment.rb +18 -0
- data/spec/environment/hotfix.rb +21 -0
- data/spec/environment/production.rb +35 -0
- data/spec/environment/release.rb +21 -0
- data/spec/environment/staging.rb +30 -0
- data/spec/environment/staging_3.rb +36 -0
- data/spec/helpers/blueprint_helper.rb +26 -0
- data/spec/helpers/cli_helper.rb +36 -0
- data/spec/helpers/connection_helper.rb +41 -0
- data/spec/helpers/crypto_helper.rb +17 -0
- data/spec/helpers/csv_helper.rb +18 -0
- data/spec/helpers/process_helper.rb +33 -0
- data/spec/helpers/project_helper.rb +59 -0
- data/spec/helpers/schedule_helper.rb +31 -0
- data/spec/helpers/spec_helper.rb +15 -0
- data/spec/integration/blueprint_updates_spec.rb +101 -0
- data/spec/integration/blueprint_with_grain_spec.rb +72 -0
- data/spec/integration/clients_spec.rb +134 -0
- data/spec/integration/command_datawarehouse_spec.rb +39 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/create_from_template_spec.rb +22 -0
- data/spec/integration/create_project_spec.rb +24 -0
- data/spec/integration/date_dim_switch_spec.rb +142 -0
- data/spec/integration/deprecated_load_spec.rb +58 -0
- data/spec/integration/full_process_schedule_spec.rb +298 -0
- data/spec/integration/full_project_spec.rb +569 -0
- data/spec/integration/over_to_user_filters_spec.rb +94 -0
- data/spec/integration/partial_md_export_import_spec.rb +42 -0
- data/spec/integration/project_spec.rb +264 -0
- data/spec/integration/rest_spec.rb +213 -0
- data/spec/integration/schedule_spec.rb +626 -0
- data/spec/integration/segments_spec.rb +141 -0
- data/spec/integration/user_filters_spec.rb +290 -0
- data/spec/integration/user_group_spec.rb +127 -0
- data/spec/integration/variables_spec.rb +188 -0
- data/spec/logging_in_logging_out_spec.rb +93 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/unit/bricks/bricks_spec.rb +35 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/commands/command_projects_spec.rb +22 -0
- data/spec/unit/core/connection_spec.rb +57 -0
- data/spec/unit/core/logging_spec.rb +133 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/core/project_spec.rb +54 -0
- data/spec/unit/extensions/hash_spec.rb +23 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +61 -0
- data/spec/unit/helpers/global_helpers_spec.rb +111 -0
- data/spec/unit/helpers_spec.rb +86 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
- data/spec/unit/models/blueprint/labels_spec.rb +44 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
- data/spec/unit/models/blueprint/reference_spec.rb +29 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
- data/spec/unit/models/domain_spec.rb +144 -0
- data/spec/unit/models/execution_spec.rb +108 -0
- data/spec/unit/models/from_wire_spec.rb +296 -0
- data/spec/unit/models/invitation_spec.rb +17 -0
- data/spec/unit/models/membership_spec.rb +132 -0
- data/spec/unit/models/metadata_spec.rb +104 -0
- data/spec/unit/models/metric_spec.rb +117 -0
- data/spec/unit/models/model_spec.rb +82 -0
- data/spec/unit/models/params_spec.rb +118 -0
- data/spec/unit/models/profile_spec.rb +215 -0
- data/spec/unit/models/project_creator_spec.rb +127 -0
- data/spec/unit/models/project_role_spec.rb +94 -0
- data/spec/unit/models/project_spec.rb +162 -0
- data/spec/unit/models/report_result_data_spec.rb +199 -0
- data/spec/unit/models/schedule_spec.rb +418 -0
- data/spec/unit/models/to_manifest_spec.rb +63 -0
- data/spec/unit/models/unit_project_spec.rb +125 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +265 -0
- data/spec/unit/rest/polling_spec.rb +89 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1125 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
# Global requires
|
8
|
+
require 'multi_json'
|
9
|
+
|
10
|
+
# Local requires
|
11
|
+
require 'gooddata/models/models'
|
12
|
+
|
13
|
+
module GoodData::Helpers
|
14
|
+
module BlueprintHelper
|
15
|
+
def blueprint_from_file(bp)
|
16
|
+
# Try to load as full path
|
17
|
+
raw = IO.read(bp)
|
18
|
+
|
19
|
+
# TODO: Try to load as relative path if failed
|
20
|
+
|
21
|
+
parsed = MultiJson.load(raw, :symbolize_keys => true)
|
22
|
+
return GoodData::Model::ProjectBlueprint.new(parsed)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'gooddata/cli/cli'
|
8
|
+
|
9
|
+
module GoodData::Helpers
|
10
|
+
module CliHelper
|
11
|
+
# Execute block and capture its stdou
|
12
|
+
# @param block Block to be executed with stdout redirected
|
13
|
+
# @returns Captured output as string
|
14
|
+
def capture_stdout(&block)
|
15
|
+
original_stdout = $stdout
|
16
|
+
$stdout = fake = StringIO.new
|
17
|
+
begin
|
18
|
+
yield
|
19
|
+
ensure
|
20
|
+
$stdout = original_stdout
|
21
|
+
end
|
22
|
+
fake.string
|
23
|
+
end
|
24
|
+
|
25
|
+
# Run CLI with arguments and return captured stdout
|
26
|
+
# @param args Arguments
|
27
|
+
# @return Captured stdout
|
28
|
+
def run_cli(args = [])
|
29
|
+
old = $0
|
30
|
+
$0 = 'gooddata'
|
31
|
+
res = capture_stdout { GoodData::CLI.main(args) }
|
32
|
+
$0 = old
|
33
|
+
res
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'gooddata/connection'
|
8
|
+
|
9
|
+
require_relative '../environment/environment'
|
10
|
+
|
11
|
+
GoodData::Environment.load
|
12
|
+
|
13
|
+
module GoodData::Helpers
|
14
|
+
module ConnectionHelper
|
15
|
+
include GoodData::Environment::ConnectionHelper
|
16
|
+
|
17
|
+
class << self
|
18
|
+
# Creates connection using default credentials or supplied one
|
19
|
+
#
|
20
|
+
# @param [String] username Optional username
|
21
|
+
# @param [String] password Optional password
|
22
|
+
def create_default_connection(username = GoodData::Environment::ConnectionHelper::DEFAULT_USERNAME, password = GoodData::Environment::ConnectionHelper::DEFAULT_PASSWORD)
|
23
|
+
GoodData::connect(username, password, :server => GoodData::Environment::ConnectionHelper::DEFAULT_SERVER, :verify_ssl => OpenSSL::SSL::VERIFY_NONE)
|
24
|
+
end
|
25
|
+
|
26
|
+
def disconnect
|
27
|
+
conn = GoodData.connection.connection
|
28
|
+
GoodData.disconnect
|
29
|
+
puts conn.stats_table
|
30
|
+
end
|
31
|
+
|
32
|
+
# Creates connection using environment varibles GD_GEM_USER and GD_GEM_PASSWORD
|
33
|
+
def create_private_connection
|
34
|
+
username = ENV['GD_GEM_USER'] || DEFAULT_USERNAME
|
35
|
+
password = ENV['GD_GEM_PASSWORD'] || DEFAULT_PASSWORD
|
36
|
+
|
37
|
+
GoodData::connect(username, password)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'securerandom'
|
8
|
+
|
9
|
+
module GoodData::Helpers
|
10
|
+
module CryptoHelper
|
11
|
+
class << self
|
12
|
+
def generate_password
|
13
|
+
SecureRandom.hex(16)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
# Global requires
|
8
|
+
require 'multi_json'
|
9
|
+
|
10
|
+
# Local requires
|
11
|
+
require 'gooddata/models/models'
|
12
|
+
|
13
|
+
module GoodData::Helpers
|
14
|
+
module CsvHelper
|
15
|
+
CSV_PATH_EXPORT = 'out.txt'
|
16
|
+
CSV_PATH_IMPORT = File.join(File.dirname(__FILE__), '..', 'data', 'users.csv')
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
# Global requires
|
8
|
+
require 'multi_json'
|
9
|
+
require 'pmap'
|
10
|
+
|
11
|
+
# Local requires
|
12
|
+
require 'gooddata/models/models'
|
13
|
+
|
14
|
+
require_relative '../environment/environment'
|
15
|
+
|
16
|
+
GoodData::Environment.load
|
17
|
+
|
18
|
+
module GoodData::Helpers
|
19
|
+
module ProcessHelper
|
20
|
+
include GoodData::Environment::ProcessHelper
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def remove_old_processes(project)
|
24
|
+
processes = project.processes
|
25
|
+
processes.pmap do |process|
|
26
|
+
next if process.obj_id == GoodData::Environment::ProcessHelper::PROCESS_ID
|
27
|
+
puts "Deleting #{process.inspect}"
|
28
|
+
process.delete
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
# Global requires
|
8
|
+
require 'multi_json'
|
9
|
+
|
10
|
+
# Local requires
|
11
|
+
require 'gooddata/models/models'
|
12
|
+
|
13
|
+
require_relative '../environment/environment'
|
14
|
+
|
15
|
+
GoodData::Environment.load
|
16
|
+
|
17
|
+
module GoodData::Helpers
|
18
|
+
module ProjectHelper
|
19
|
+
include GoodData::Environment::ProjectHelper
|
20
|
+
|
21
|
+
ENVIRONMENT = 'TESTING'
|
22
|
+
|
23
|
+
class << self
|
24
|
+
def get_default_project(opts = {:client => GoodData.connection})
|
25
|
+
GoodData::Project[GoodData::Helpers::ProjectHelper::PROJECT_ID, opts]
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete_old_projects(opts = {:client => GoodData.connection})
|
29
|
+
projects = opts[:client].projects
|
30
|
+
projects.each do |project|
|
31
|
+
next if project.json['project']['meta']['author'] != client.user.uri
|
32
|
+
next if project.pid == 'we1vvh4il93r0927r809i3agif50d7iz'
|
33
|
+
begin
|
34
|
+
puts "Deleting project #{project.title}"
|
35
|
+
project.delete
|
36
|
+
rescue e
|
37
|
+
puts 'ERROR: ' + e.to_s
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_random_user(client)
|
43
|
+
num = rand(1e7)
|
44
|
+
login = "gemtest#{num}@gooddata.com"
|
45
|
+
|
46
|
+
opts = {
|
47
|
+
email: login,
|
48
|
+
login: login,
|
49
|
+
first_name: 'the',
|
50
|
+
last_name: num.to_s,
|
51
|
+
role: 'editor',
|
52
|
+
password: CryptoHelper.generate_password,
|
53
|
+
domain: ConnectionHelper::DEFAULT_DOMAIN
|
54
|
+
}
|
55
|
+
GoodData::Membership.create(opts, client: client)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'pmap'
|
8
|
+
|
9
|
+
require_relative 'process_helper'
|
10
|
+
|
11
|
+
require_relative '../environment/environment'
|
12
|
+
|
13
|
+
GoodData::Environment.load
|
14
|
+
|
15
|
+
module GoodData::Helpers
|
16
|
+
module ScheduleHelper
|
17
|
+
include GoodData::Environment::ScheduleHelper
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def remove_old_schedules(project)
|
21
|
+
schedules = project.schedules
|
22
|
+
schedules.pmap do |schedule|
|
23
|
+
next if schedule.obj_id == SCHEDULE_ID
|
24
|
+
|
25
|
+
puts "Deleting #{schedule.inspect}"
|
26
|
+
schedule.delete
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
module GoodData::Helpers
|
8
|
+
module SpecHelper
|
9
|
+
class << self
|
10
|
+
def random_choice(possibilities, current_value)
|
11
|
+
(possibilities - Array(current_value)).sample
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'gooddata'
|
8
|
+
|
9
|
+
describe 'Create project using GoodData client', :constraint => 'slow' do
|
10
|
+
before(:all) do
|
11
|
+
@client = ConnectionHelper.create_default_connection
|
12
|
+
@blueprint = GoodData::Model::ProjectBlueprint.from_json('./spec/data/blueprints/test_project_model_spec.json')
|
13
|
+
@project = @client.create_project_from_blueprint(@blueprint, auth_token: ConnectionHelper::GD_PROJECT_TOKEN, environment: ProjectHelper::ENVIRONMENT)
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:all) do
|
17
|
+
@project.delete
|
18
|
+
@client.disconnect
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'Should create project using GoodData::Rest::Client#create_project' do
|
22
|
+
|
23
|
+
data = [
|
24
|
+
["repo_id", "repo_name"],
|
25
|
+
[1, "goodot"],
|
26
|
+
[2, "bam"],
|
27
|
+
[3, "infra"]]
|
28
|
+
@project.upload(data, @blueprint, 'dataset.repos')
|
29
|
+
|
30
|
+
data = [
|
31
|
+
['dev_id', 'email'],
|
32
|
+
['1', 'tomas@gmail.com'],
|
33
|
+
['2', 'petr@gmail.com'],
|
34
|
+
['3', 'jirka@gmail.com']]
|
35
|
+
@project.upload(data, @blueprint, 'dataset.devs')
|
36
|
+
|
37
|
+
data = [
|
38
|
+
['lines_changed', 'committed_on', 'dev_id', 'repo_id'],
|
39
|
+
[1, '01/01/2011', '1', '1'],
|
40
|
+
[2, '01/01/2011', '2', '2'],
|
41
|
+
[3, '01/01/2011', '3', '3']]
|
42
|
+
@project.upload(data, @blueprint, 'dataset.commits')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should be able to add anchor's labels" do
|
46
|
+
bp = @project.blueprint
|
47
|
+
bp.datasets('dataset.commits').change do |d|
|
48
|
+
d.add_label('label.commits.factsof.id',
|
49
|
+
reference: 'attr.commits.factsof',
|
50
|
+
name: 'anchor_label')
|
51
|
+
end
|
52
|
+
@project.update_from_blueprint(bp, preference: { cascade_drops: false, preserve_data: false})
|
53
|
+
data = [
|
54
|
+
['label.commits.factsof.id', 'fact.commits.lines_changed', 'committed_on', 'dataset.devs', 'dataset.repos'],
|
55
|
+
['111', 1, '01/01/2011', '1', '1'],
|
56
|
+
['222', 2, '01/01/2011', '2', '2'],
|
57
|
+
['333', 3, '01/01/2011', '3', '3']]
|
58
|
+
@project.upload(data, bp, 'dataset.commits')
|
59
|
+
m = @project.facts.first.create_metric
|
60
|
+
@project.compute_report(top: [m], left: ['label.commits.factsof.id'])
|
61
|
+
end
|
62
|
+
|
63
|
+
it "be able to remove anchor's labels" do
|
64
|
+
bp = @project.blueprint
|
65
|
+
bp.datasets('dataset.commits').anchor.strip!
|
66
|
+
@project.update_from_blueprint(bp)
|
67
|
+
bp = @project.blueprint
|
68
|
+
expect(bp.datasets('dataset.commits').anchor.labels.count).to eq 0
|
69
|
+
expect(@project.labels('label.commits.factsof.id')).to eq nil
|
70
|
+
end
|
71
|
+
|
72
|
+
it "is possible to move attribute. Let's make a fast attribute." do
|
73
|
+
# define stuff
|
74
|
+
m = @project.facts.first.create_metric.save
|
75
|
+
report = @project.create_report(title: 'Test report', top: [m], left: ['label.devs.dev_id.email'])
|
76
|
+
#both compute
|
77
|
+
expect(m.execute).to eq 6
|
78
|
+
expect(report.execute.without_top_headers.to_a).to eq [['jirka@gmail.com', 3],
|
79
|
+
['petr@gmail.com', 2],
|
80
|
+
['tomas@gmail.com', 1]]
|
81
|
+
|
82
|
+
# We move attribute
|
83
|
+
@blueprint.move!('some_attr_id', 'dataset.repos', 'dataset.commits')
|
84
|
+
@project.update_from_blueprint(@blueprint)
|
85
|
+
|
86
|
+
# load new data
|
87
|
+
data = [
|
88
|
+
['lines_changed', 'committed_on', 'dev_id', 'repo_id', 'repo_name'],
|
89
|
+
[1, '01/01/2011', '1', '1', 'goodot'],
|
90
|
+
[2, '01/01/2011', '2', '2', 'goodot'],
|
91
|
+
[3, '01/01/2011', '3', '3', 'infra']]
|
92
|
+
@project.upload(data, @blueprint, 'dataset.commits')
|
93
|
+
|
94
|
+
# both still compute
|
95
|
+
# since we did not change the grain the results are the same
|
96
|
+
expect(m.execute).to eq 6
|
97
|
+
expect(report.execute.without_top_headers.to_a).to eq [["jirka@gmail.com", 3],
|
98
|
+
["petr@gmail.com", 2],
|
99
|
+
["tomas@gmail.com", 1]]
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require 'gooddata'
|
8
|
+
|
9
|
+
describe 'Create project using GoodData client', :constraint => 'slow' do
|
10
|
+
before(:all) do
|
11
|
+
@client = ConnectionHelper.create_default_connection
|
12
|
+
@blueprint = GoodData::Model::ProjectBlueprint.build("My project from blueprint") do |p|
|
13
|
+
p.add_date_dimension('created_on')
|
14
|
+
|
15
|
+
p.add_dataset('dataset.users') do |d|
|
16
|
+
d.add_anchor('attr.users.id', grain: [{ date: 'created_on' }, { attribute: 'attribute.user' }])
|
17
|
+
d.add_date('created_on')
|
18
|
+
d.add_attribute('attribute.user')
|
19
|
+
d.add_label('label.user.email', reference: 'attribute.user')
|
20
|
+
d.add_fact('fact.users.some_number')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
@blueprint.valid? # => true
|
24
|
+
|
25
|
+
@project = @client.create_project_from_blueprint(@blueprint, auth_token: ConnectionHelper::GD_PROJECT_TOKEN)
|
26
|
+
end
|
27
|
+
|
28
|
+
after(:all) do
|
29
|
+
@project.delete
|
30
|
+
@client.disconnect
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'Should load the data with grain' do
|
34
|
+
data = [
|
35
|
+
['created_on', 'label.user.email', 'fact.users.some_number'],
|
36
|
+
['01/01/2011', 'thomas', '1'],
|
37
|
+
['01/01/2011', 'thomas', '2'],
|
38
|
+
['01/01/2011', 'jim', '2'],
|
39
|
+
['01/01/2011', 'peter', '2'],
|
40
|
+
['01/01/2011', 'john', '3']]
|
41
|
+
@project.upload(data, @blueprint, 'dataset.users')
|
42
|
+
|
43
|
+
expect(@project.blueprint.datasets.first.count(@project)).to eq 4
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'Should be able to remove grain and load the same data' do
|
47
|
+
updated_blueprint = GoodData::Model::ProjectBlueprint.build("My project from blueprint") do |p|
|
48
|
+
p.add_date_dimension('created_on')
|
49
|
+
|
50
|
+
p.add_dataset('dataset.users') do |d|
|
51
|
+
d.add_anchor('attr.users.id')
|
52
|
+
d.add_date('created_on')
|
53
|
+
d.add_attribute('attribute.user')
|
54
|
+
d.add_label('label.user.email', reference: 'attribute.user')
|
55
|
+
d.add_fact('fact.users.some_number')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
@project.update_from_blueprint(updated_blueprint)
|
60
|
+
|
61
|
+
data = [
|
62
|
+
['created_on', 'label.user.email', 'fact.users.some_number'],
|
63
|
+
['01/01/2011', 'thomas', '1'],
|
64
|
+
['01/01/2011', 'thomas', '2'],
|
65
|
+
['01/01/2011', 'jim', '2'],
|
66
|
+
['01/01/2011', 'peter', '2'],
|
67
|
+
['01/01/2011', 'john', '3']]
|
68
|
+
@project.upload(data, @blueprint, 'dataset.users')
|
69
|
+
|
70
|
+
expect(@project.blueprint.datasets.first.count(@project)).to eq 5
|
71
|
+
end
|
72
|
+
end
|