blob: 72f115b7a89c0e839e9a88685bb0e4618e4b5944 [file] [log] [blame] [view]
# Maps Booking
This repo contains tools and code samples for partners that wish to integrate
with [Reserve](https://www.google.com/maps/reserve/) API v3.
## Testing Client
Before using the test utilites, the Go programming language must be installed on
your workstation. A precompiled Go binary for your operating system can be
[found here](https://golang.org/dl/)
This guide will assume you're using the default GOPATH and subsequent GOBIN.
For a comprehensive explanation of the GOPATH env variable please see
[this document](https://golang.org/dl/) by the Go team.
### Installing the utilities with Linux
First, build your Go directory structure. A comprehensive guide on the intended
structure of Go code can be [found here.](https://golang.org/doc/code.html)
mkdir -p $HOME/go/bin $HOME/go/pkg $HOME/go/src/github.com/maps-booking-v3
Next, add the following to your ~/.bashrc
export PATH=$PATH:$(go env GOPATH)/bin
export GOPATH=$(go env GOPATH)
export GOBIN=$(go env GOPATH)/bin
Source changes
source ~/.bashrc
Remove any files from a previous installation
rm -rf $HOME/go/src/github.com/maps-booking-v3/
Next, retrieve the utilities from the
[maps-booking-v3 repository](https://maps-booking.googlesource.com/)
git clone https://maps-booking.googlesource.com/maps-booking-v3 $HOME/go/src/github.com/maps-booking-v3/
Download all dependencies
cd $HOME/go
go get -d ./...
If installing the order based test client, run
go install $HOME/go/src/github.com/maps-booking-v3/testclient/orderClient.go
Or the booking based test client, run
go install $HOME/go/src/github.com/maps-booking-v3/testclient/bookingClient.go
Or the waitlist based test client, run
go install $HOME/go/src/github.com/maps-booking-v3/testclient/waitlistClient.go
### Installing the utilities with Windows Powershell
First, build your Go directory structure. A comprehensive guide on the intended
structure of Go code can be [found here.](https://golang.org/doc/code.html)
$env:HOME = $env:USERPROFILE
md $env:HOME\go\bin
md $env:HOME\go\pkg
md $env:HOME\go\src\github.com\maps-booking-v3
Next, set the appropriate environment variables
$env:PATH = $env:PATH + ";" + (go env GOPATH) + "\bin"
$env:GOPATH = (go env GOPATH)
$env:GOBIN = (go env GOPATH) + "\bin"
Remove any files from a previous installation
rd -r $env:HOME\go\src\github.com\maps-booking-v3\
Next, retrieve the utilities from the
[maps-booking-v3 repository](https://maps-booking.googlesource.com/)
git clone https://maps-booking.googlesource.com/maps-booking-v3 $env:HOME\go\src\github.com\maps-booking-v3\
Download all dependencies
cd $env:HOME\go
# NOTE: You may see output '...cannot find package...' when running the following 'go get' command.
# These are likely just warnings and you can proceed with the installation.
go get -d .\...
If installing the order based test client, run
go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\orderClient.go
Or the booking based test client, run
go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\bookingClient.go
Or the waitlist based test client, run
go install $env:HOME\go\src\github.com\maps-booking-v3\testclient\waitlistClient.go
### Using the utilities
After following the install steps above an executable should now live under the
path
$HOME/go/bin/
or
$env:HOME\go\bin\
All available flags can be displayed using the '--help' flag. The currently
accepted flags are:
bookingClient.go
-all_tests
Whether to test all endpoints.
-availability_feed string
Absolute path to availability feed required for all tests except health.
Feeds can be in either json or pb3 format
-booking_status_test
Whether to test the GetBookingStatus endpoint.
-booking_test
Whether to test the CreateBooking endpoint.
-cancel_all_bookings
This option assumes that the ListBookings and UpdateBooking endpoints
are fully functional. This is a convenience flag for purging your system
of all previously created bookings.
-check_availability_test
Whether to test the CheckAvailability endpoint.
-health_check_test
Whether to test the Health endpoint.
-list_bookings_test
Whether to test the ListBookings endpoint
-num_test_slots int
Maximum number of slots to test from availability_feed. Slots will be
selected randomly (default 10)
-output_dir string
Absolute path of dir to dump log file.
-rescheduling_test
Whether to test the UpdateBooking endpoint.
-server_addr string
Your http server's address in the format of host:port
(default "localhost:443")
-credentials_file string
File containing credentials for your server. Leave blank to bypass authentication.
File should have exactly one line of the form 'username:password'.
-ca_file string
Absolute path to your server's Certificate Authority root cert.
Downloading all roots currently recommended by the Google Internet
Authority is a suitable alternative https://pki.google.com/roots.pem.
Leave blank to connect using http rather than https.
-full_server_name string
Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.
-output_to_terminal bool
Output to terminal rather than a file.
-use_batch_availability_lookup bool
Whether to use the BatchAvailabilityLookup RPC (as opposed to the deprecated CheckAvailability)
orderClient.go
-all_tests
Whether to test all endpoints syncronously, including ListOrders flow.
-availability_feed string
Absolute path to availability feed required for all tests except health. Feeds can be in either json or pb3 format
-ca_file string
Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https.
-check_order_test
Whether to test the CheckOrderFulfillability endpoint.
-create_order_test
Whether to test the CreateOrder endpoint.
-credentials_file string
File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'.
-full_server_name string
Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.
-health_check_test
Whether to test the Health endpoint.
-num_test_slots int
Maximum number of slots to test from availability_feed. Slots will be selected randomly (default 10)
-output_dir string
Absolute path of dir to dump log file.
-server_addr string
Your http server's address in the format of host:port (default "example.com:80")
-service_feed string
Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format
-output_to_terminal bool
Output to terminal rather than a file.
waitlistClient.go
-server_addr string
Your http server's address in the format of host:port (default "example.com:80")
-service_feed string
Absolute path to service feed required for all tests except health. Feeds can be in either json or pb3 format.
-all_tests
Whether to test all endpoints syncronously.
-health_check_test
Whether to test the Health endpoint.
-batch_get_wait_estimates_test
Whether to test the BatchGetWaitEstimates endpoint.
-create_waitlist_entry_test
Whether to test the CreateWaitlistEntry endpoint.
-get_waitlist_entry_test
Whether to test the GetWaitlistEntry endpoint.
-delete_waitlist_entry_test
Whether to test the DeleteWaitlistEntry endpoint.
-ca_file string
Absolute path to your server's Certificate Authority root cert. Downloading all roots currently recommended by the Google Internet Authority is a suitable alternative https://pki.google.com/roots.pem. Leave blank to connect using http rather than https.
-credentials_file string
File containing credentials for your server. Leave blank to bypass authentication. File should have exactly one line of the form 'username:password'.
-full_server_name string
Fully qualified domain name. Same name used to sign CN. Only necessary if ca_file is specified and the base URL differs from the server address.
-num_test_services int
Maximum number of services to test from service_feed. Services will be selected randomly (default 10)
-output_dir string
Absolute path of dir to dump log file.
-output_to_terminal bool
Output to terminal rather than a file.
Plese note that this testing tool makes reservations as a test user with
**user_id = 0**. Therefore, if you are running the tool many times, or before
final tests, you might want cancel all previous bookings for that user to make
sure all existing bookings for the user are deleted:
bin/bookingClient -server_addr="localhost:443" -cancel_all_bookings=true -output_dir="/tmp"
Example Usage:
bin/bookingClient -server_addr="localhost:443" -check_availability_test=true -output_dir="/tmp" -availability_feed="/tmp/test.json"
bin/orderClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" -availability_feed="/tmp/test.json" -service_feed="/tmp/service.json"
bin/waitlistClient -server_addr="external-dns:443" -all_tests=true -output_dir="/tmp" service_feed="/tmp/service.json"
### Testing
It is important that as part of testing you verify all aspects of the server
invocation - authentication, availability, cancellation, and rescheduling tests.
As the final step, you must be able to execute the designated utility with the
flag -all_tests=true and it should successfully pass the entire series of tests.
### Parsing the output
The test utilities will output a file with the prefix 'http_test_client_log_'
followed by a timestamp in RFC3339 format. The output file contains a complete
log of all Requests and Responses sent/received by the testing tool as well as
diffs of the expected response in the event of errors. Similar to a compiler, an
overview of the entire run can be found at the end of the file for user friendly
digestion.