Skip to content

Commit

Permalink
Merge pull request #77 from GoogleCloudPlatform/quickstarts
Browse files Browse the repository at this point in the history
Add new "quickstart" samples.
  • Loading branch information
remi Taylor committed Oct 20, 2016
2 parents 03740bd + 5796925 commit ca91692
Show file tree
Hide file tree
Showing 22 changed files with 748 additions and 1 deletion.
1 change: 1 addition & 0 deletions bigquery/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ Commands:
query <query>
query_job <query>
```

34 changes: 34 additions & 0 deletions bigquery/quickstart.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2016 Google, Inc
#
# 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.

# [START bigquery_quickstart]
# Imports the Google Cloud client library
require "google/cloud"

# Your Google Cloud Platform project ID
project_id = "YOUR_PROJECT_ID"

# Instantiates a client
gcloud = Google::Cloud.new project_id
bigquery = gcloud.bigquery

# The name for the new dataset
dataset_name = "my_new_dataset"

# Creates the new dataset
dataset = bigquery.create_dataset dataset_name

puts "Dataset #{dataset.dataset_id} created."
# [END bigquery_quickstart]

43 changes: 43 additions & 0 deletions bigquery/spec/quickstart_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright 2016 Google, Inc
#
# 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.

require "rspec"
require "google/cloud"

describe "BigQuery Quickstart" do

it "creates a new dataset" do
gcloud = Google::Cloud.new ENV["GOOGLE_CLOUD_PROJECT"]
bigquery = gcloud.bigquery

if bigquery.dataset "my_new_dataset"
bigquery.dataset("my_new_dataset").delete
end

expect(bigquery.dataset "my_new_dataset").to be nil
expect(Google::Cloud).to receive(:new).
with("YOUR_PROJECT_ID").
and_return(gcloud)

expect {
load File.expand_path("../quickstart.rb", __dir__)
}.to output(
"Dataset my_new_dataset created\.\n"
).to_stdout

expect(bigquery.dataset "my_new_dataset").not_to be nil
end

end

43 changes: 43 additions & 0 deletions datastore/quickstart.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright 2016 Google, Inc
#
# 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.

# [START datastore_quickstart]
# Imports the Google Cloud client library
require "google/cloud"

# Your Google Cloud Platform project ID
project_id = "YOUR_PROJECT_ID"

# Instantiates a client
gcloud = Google::Cloud.new project_id
datastore = gcloud.datastore

# The kind for the new entity
kind = "Task"
# The name/ID for the new entity
name = "sampletask1"
# The Cloud Datastore key for the new entity
task_key = datastore.key kind, name

# Prepares the new entity
task = datastore.entity task_key do |t|
t["description"] = "Buy milk"
end

# Saves the entity
datastore.save task

puts "Saved #{task.key.name}: #{task['description']}"
# [END datastore_quickstart]

45 changes: 45 additions & 0 deletions datastore/spec/quickstart_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 2016 Google, Inc
#
# 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.

require "rspec"
require "google/cloud"

describe "Datastore Quickstart" do

it "creates a new entity" do
gcloud = Google::Cloud.new ENV["GOOGLE_CLOUD_PROJECT"]
datastore = gcloud.datastore
task_key = datastore.key "Task", "sampletask1"

if datastore.find task_key
task = datastore.find task_key
datastore.delete task
end

expect(datastore.find task_key).to be nil
expect(Google::Cloud).to receive(:new).with("YOUR_PROJECT_ID").
and_return(gcloud)

expect {
load File.expand_path("../quickstart.rb", __dir__)
}.to output {
"Saved Task: Buy milk\n"
}.to_stdout

task_key = datastore.find(task_key)
expect(task_key).not_to be nil
expect(task_key["description"]).to eq "Buy milk"
end

end
36 changes: 36 additions & 0 deletions language/quickstart.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2016 Google, Inc
#
# 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.

# [START language_quickstart]
# Imports the Google Cloud client library
require "google/cloud"

# Your Google Cloud Platform project ID
project_id = "YOUR_PROJECT_ID"

# Instantiates a client
gcloud = Google::Cloud.new project_id
language = gcloud.language

# The text to analyze
text = "Hello, world!"
document = language.document text

# Detects the sentiment of the text
sentiment = document.sentiment

puts "Text: #{text}"
puts "Sentiment: #{sentiment.polarity}, #{sentiment.magnitude}"
# [END language_quickstart]

33 changes: 33 additions & 0 deletions language/spec/quickstart_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2016 Google, Inc
#
# 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.

require "rspec"
require "google/cloud"

describe "Language Quickstart" do

it "detect sentiment" do
gcloud = Google::Cloud.new ENV["GOOGLE_CLOUD_PROJECT"]
expect(Google::Cloud).to receive(:new).with("YOUR_PROJECT_ID").
and_return(gcloud)

expect {
load File.expand_path("../quickstart.rb", __dir__)
}.to output(
/Text: Hello, world!\nSentiment: 1.0/
).to_stdout
end

end

40 changes: 40 additions & 0 deletions logging/quickstart.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2016 Google, Inc
#
# 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.

# [START logging_quickstart]
# Imports the Google Cloud client library
require "google/cloud"

# Your Google Cloud Platform project ID
project_id = "YOUR_PROJECT_ID"

# Instantiates a client
gcloud = Google::Cloud.new project_id
logging = gcloud.logging

# Prepares a log entry
entry = logging.entry
# The data to log
entry.payload = "Hello, world!"
# The name of the log to write to
entry.log_name = "my-log"
# The resource associated with the data
entry.resource.type = "global"

# Writes the log entry
logging.write_entries entry

puts "Logged #{entry.payload}"
# [END logging_quickstart]

76 changes: 76 additions & 0 deletions logging/spec/quickstart_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Copyright 2016 Google, Inc
#
# 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.

require "rspec"
require "google/cloud"

describe "Logging Quickstart" do

# Simple wait method. Test for condition 5 times, delaying 1 second each time
def wait_until times: 5, delay: 1, &condition
times.times do
return if condition.call
sleep delay
end
raise "Condition not met. Waited #{times} times with #{delay} sec delay"
end

before do
@gcloud = Google::Cloud.new ENV["GOOGLE_CLOUD_PROJECT"]
@logging = @gcloud.logging
@entry = @logging.entry
@log_name = "projects/#{ENV["GOOGLE_CLOUD_PROJECT"]}/logs/" +
"quickstart_log_#{Time.now.to_i}"

@entry.log_name = @log_name
end

after do
begin
@logging.delete_log @log_name
rescue Google::Cloud::NotFoundError
end
end

def test_log_entries
@logging.entries filter: %Q{logName="#{@log_name}"}
end

it "logs a new entry" do
expect(Google::Cloud).to receive(:new).with("YOUR_PROJECT_ID").
and_return(@gcloud)
expect(@gcloud).to receive(:logging).and_return(@logging)
expect(@logging).to receive(:entry).and_return(@entry)
allow(@entry).to receive(:log_name=).with("my-log")

expect(test_log_entries).to be_empty

expect {
load File.expand_path("../quickstart.rb", __dir__)
}.to output(
"Logged Hello, world!\n"
).to_stdout

entries = []

wait_until { entries = test_log_entries; entries.any? }

expect(entries).not_to be_empty
expect(entries.length).to eq 1

entry = entries.first
expect(entry.payload).to eq "Hello, world!"
end
end

2 changes: 1 addition & 1 deletion logging/spec/sample_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ def cleanup!
timestamp = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} [^\\\\]+"

expect { list_log_entries }.to output(
%r{\[#{timestamp}\] #{my_application_log_name} "Log message"}
%r{\[#{timestamp}\] #{my_application_log_name} \"Log message}
).to_stdout
end

Expand Down
Loading

0 comments on commit ca91692

Please sign in to comment.