| # 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. |