Introduced cancel_all_bookings flag
diff --git a/README.md b/README.md
index de53791..5deb718 100644
--- a/README.md
+++ b/README.md
@@ -90,6 +90,14 @@
Whether to test the GetBookingStatus endpoint.
-booking_test
Whether to test the CreateBooking 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
+ -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
@@ -97,8 +105,8 @@
-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)
+ 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
@@ -106,8 +114,13 @@
-rpc_timeout duration
Number of seconds to wait before abandoning request (default 30s)
-server_addr string
- Your grpc server's address in the format of
- host:port (default "example.com:80")
+ Your grpc server's address in the format of host:port
+ (default "example.com:80")
+ -servername_override string
+ Override FQDN to use. Please see README for additional details
+ -tls
+ Whether to enable TLS when using the test client. Please review the
+ README.md before attempting to use this flag.
Example Usage:
diff --git a/testclient/main.go b/testclient/main.go
index 0ed4589..8f18633 100644
--- a/testclient/main.go
+++ b/testclient/main.go
@@ -118,21 +118,22 @@
-----END RSA PRIVATE KEY-----`
var (
- serverAddr = flag.String("server_addr", "example.com:80", "Your grpc server's address in the format of host:port")
- rpcTimeout = flag.Duration("rpc_timeout", 30*time.Second, "Number of seconds to wait before abandoning request")
- testSlots = flag.Int("num_test_slots", 10, "Maximum number of slots to test from availability_feed. Slots will be selected randomly")
- allFlows = flag.Bool("all_tests", false, "Whether to test all endpoints.")
- healthFlow = flag.Bool("health_check_test", false, "Whether to test the Health endpoint.")
- checkFlow = flag.Bool("check_availability_test", false, "Whether to test the CheckAvailability endpoint.")
- bookFlow = flag.Bool("booking_test", false, "Whether to test the CreateBooking endpoint.")
- listFlow = flag.Bool("list_bookings_test", false, "Whether to test the ListBookings endpoint")
- statusFlow = flag.Bool("booking_status_test", false, "Whether to test the GetBookingStatus endpoint.")
- rescheduleFlow = flag.Bool("rescheduling_test", false, "Whether to test the UpdateBooking endpoint.")
- availabilityFeed = flag.String("availability_feed", "", "Absolute path to availability feed required for all tests except health. Feeds can be in either json or pb3 format")
- outputDir = flag.String("output_dir", "", "Absolute path of dir to dump log file.")
- enableTLS = flag.Bool("tls", false, "Whether to enable TLS when using the test client. Please review the README.md before attempting to use this flag.")
- caFile = flag.String("ca_file", "", "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")
- serverName = flag.String("servername_override", "", "Override FQDN to use. Please see README for additional details")
+ serverAddr = flag.String("server_addr", "example.com:80", "Your grpc server's address in the format of host:port")
+ rpcTimeout = flag.Duration("rpc_timeout", 30*time.Second, "Number of seconds to wait before abandoning request")
+ testSlots = flag.Int("num_test_slots", 10, "Maximum number of slots to test from availability_feed. Slots will be selected randomly")
+ allFlows = flag.Bool("all_tests", false, "Whether to test all endpoints.")
+ healthFlow = flag.Bool("health_check_test", false, "Whether to test the Health endpoint.")
+ checkFlow = flag.Bool("check_availability_test", false, "Whether to test the CheckAvailability endpoint.")
+ bookFlow = flag.Bool("booking_test", false, "Whether to test the CreateBooking endpoint.")
+ listFlow = flag.Bool("list_bookings_test", false, "Whether to test the ListBookings endpoint")
+ statusFlow = flag.Bool("booking_status_test", false, "Whether to test the GetBookingStatus endpoint.")
+ rescheduleFlow = flag.Bool("rescheduling_test", false, "Whether to test the UpdateBooking endpoint.")
+ cancelAllBookings = flag.Bool("cancel_all_bookings", false, "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.")
+ availabilityFeed = flag.String("availability_feed", "", "Absolute path to availability feed required for all tests except health. Feeds can be in either json or pb3 format")
+ outputDir = flag.String("output_dir", "", "Absolute path of dir to dump log file.")
+ enableTLS = flag.Bool("tls", false, "Whether to enable TLS when using the test client. Please review the README.md before attempting to use this flag.")
+ caFile = flag.String("ca_file", "", "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")
+ serverName = flag.String("servername_override", "", "Override FQDN to use. Please see README for additional details")
)
type counters struct {
@@ -299,6 +300,11 @@
ctx := context.Background()
+ // Health check doesn't affect the cancel booking flow so we let it through.
+ if *cancelAllBookings && (*allFlows || *checkFlow || *bookFlow || *listFlow || *statusFlow || *rescheduleFlow) {
+ log.Fatal("cancel_all_bookings is not supported with other test flows")
+ }
+
// HealthCheck Flow
if *healthFlow || *allFlows {
stats.HealthCheckSuccess = true
@@ -312,15 +318,18 @@
}
}
- // Build availablility records.
- if *availabilityFeed == "" {
- log.Fatal("please set availability_feed flag if you wish to test additional flows")
+ var av []*fpb.Availability
+ if !*cancelAllBookings {
+ // Build availablility records.
+ if *availabilityFeed == "" {
+ log.Fatal("please set availability_feed flag if you wish to test additional flows")
+ }
+ av, err = utils.AvailabilityFrom(*availabilityFeed, *testSlots)
+ if err != nil {
+ log.Fatal(err.Error())
+ }
+ stats.TotalSlotsProcessed += len(av)
}
- av, err := utils.AvailabilityFrom(*availabilityFeed, *testSlots)
- if err != nil {
- log.Fatal(err.Error())
- }
- stats.TotalSlotsProcessed += len(av)
// AvailabilityCheck Flow
if *checkFlow || *allFlows {
@@ -361,8 +370,8 @@
}
// ListBookings Flow
- if *listFlow || *allFlows {
- if len(b) == 0 {
+ if *listFlow || *allFlows || *cancelAllBookings {
+ if len(b) == 0 && !*cancelAllBookings {
b = GenerateBookings(setTimeout(ctx), av, &stats, client)
}
utils.LogFlow("List Bookings", "Start")