Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add trace based testing examples #877

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
fc1005a
Adding a user purchasing product trace-based test case
danielbdias May 4, 2023
dbedfd6
Adding more tests
danielbdias May 4, 2023
5f31c6d
Adding run script
danielbdias May 4, 2023
d2d9d06
Fixed yaml lint issues
danielbdias May 4, 2023
32c0e72
Adding license header to the files
danielbdias May 4, 2023
d129654
Adding trace-based tests for more services
danielbdias May 11, 2023
804ef19
Updating tests and adding them on the same format as the integration …
danielbdias May 12, 2023
5eb055a
Fixed payment tests
danielbdias May 12, 2023
4080548
Fixing e2e web tests
danielbdias May 13, 2023
ddd9912
Fixing details found by yamllint
danielbdias May 15, 2023
43a6eeb
Updating trace-based tests to refer a protobuf file instead of embedd…
danielbdias Jun 5, 2023
b4f896d
Fixed data types for email test and improved test time
danielbdias Jun 5, 2023
c52d03b
Structured tests per service
danielbdias Jun 24, 2023
02d7f7b
Added tests for frontend service following endpoints used on loadgene…
danielbdias Jun 24, 2023
2bd7c5f
Merge branch 'main' into add/trace-based-testing-examples
danielbdias Jun 26, 2023
6725bbd
fixing yaml lint issues
danielbdias Jun 26, 2023
14e2ea6
Merge branch 'main' into add/trace-based-testing-examples
danielbdias Jul 6, 2023
5dbcec2
Merge branch 'main' into add/trace-based-testing-examples
danielbdias Jul 10, 2023
d60eebd
Merge branch 'main' into add/trace-based-testing-examples
danielbdias Jul 10, 2023
72d2cdd
Fixing small issues on tests
danielbdias Jul 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updating trace-based tests to refer a protobuf file instead of embedd…
…ing it
  • Loading branch information
danielbdias committed Jun 22, 2023
commit 43a6eeb3ff0b68448269bcc0b4c7d2abe868cfcb
5 changes: 3 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -725,10 +725,11 @@ services:
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- tracetest-server
tracetest-server:
condition: service_healthy

tracetest-server:
image: kubeshop/tracetest:latest
image: kubeshop/tracetest:v0.11.10-rc.2
platform: linux/amd64
container_name: tracetest-server
profiles:
Expand Down
14 changes: 11 additions & 3 deletions test/tracetesting/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,16 @@ FROM alpine
WORKDIR /app

RUN apk --update add bash jq curl
RUN curl -L https://raw.githubusercontent.com/kubeshop/tracetest/main/install-cli.sh | bash
#RUN curl -L https://raw.githubusercontent.com/kubeshop/tracetest/main/install-cli.sh | bash

COPY ./test/tracetesting ./
RUN curl -L https://github.com/kubeshop/tracetest/releases/download/v0.11.10-rc.2/tracetest_0.11.10-rc.2_linux_i386.tar.gz --output /tmp/cli.tar.gz
RUN tar -xf /tmp/cli.tar.gz -C /tmp
RUN mv /tmp/tracetest /usr/local/bin/tracetest
RUN rm -f /tmp/cli.tar.gz

CMD ["/bin/sh", "/app/run.bash"]
COPY ./test/tracetesting ./test/tracetesting
COPY ./pb ./pb

WORKDIR /app/test/tracetesting

CMD ["/bin/sh", "/app/test/tracetesting/run.bash"]
2 changes: 1 addition & 1 deletion test/tracetesting/run.bash
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ check_if_tracetest_is_installed() {
run_tracetest() {
test_file=$1

tracetest -c ./cli-config.yml test run -d $test_file -w
TRACETEST_DEV=true tracetest -c ./cli-config.yml test run -d $test_file -w
return $?
}

Expand Down
321 changes: 1 addition & 320 deletions test/tracetesting/tech-based-tests/ad-service/get.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,326 +9,7 @@ spec:
trigger:
type: grpc
grpc:
protobufFile: |
// Copyright 2020 Google LLC
//
// 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.

syntax = "proto3";

import "google/protobuf/timestamp.proto";

package oteldemo;

option go_package = "genproto/oteldemo";

// -----------------Cart service-----------------

service CartService {
rpc AddItem(AddItemRequest) returns (Empty) {}
rpc GetCart(GetCartRequest) returns (Cart) {}
rpc EmptyCart(EmptyCartRequest) returns (Empty) {}
}

message CartItem {
string product_id = 1;
int32 quantity = 2;
}

message AddItemRequest {
string user_id = 1;
CartItem item = 2;
}

message EmptyCartRequest {
string user_id = 1;
}

message GetCartRequest {
string user_id = 1;
}

message Cart {
string user_id = 1;
repeated CartItem items = 2;
}

message Empty {}

// ---------------Recommendation service----------

service RecommendationService {
rpc ListRecommendations(ListRecommendationsRequest) returns (ListRecommendationsResponse){}
}

message ListRecommendationsRequest {
string user_id = 1;
repeated string product_ids = 2;
}

message ListRecommendationsResponse {
repeated string product_ids = 1;
}

// ---------------Product Catalog----------------

service ProductCatalogService {
rpc ListProducts(Empty) returns (ListProductsResponse) {}
rpc GetProduct(GetProductRequest) returns (Product) {}
rpc SearchProducts(SearchProductsRequest) returns (SearchProductsResponse) {}
}

message Product {
string id = 1;
string name = 2;
string description = 3;
string picture = 4;
Money price_usd = 5;

// Categories such as "clothing" or "kitchen" that can be used to look up
// other related products.
repeated string categories = 6;
}

message ListProductsResponse {
repeated Product products = 1;
}

message GetProductRequest {
string id = 1;
}

message SearchProductsRequest {
string query = 1;
}

message SearchProductsResponse {
repeated Product results = 1;
}

// ---------------Shipping Service----------

service ShippingService {
rpc GetQuote(GetQuoteRequest) returns (GetQuoteResponse) {}
rpc ShipOrder(ShipOrderRequest) returns (ShipOrderResponse) {}
}

message GetQuoteRequest {
Address address = 1;
repeated CartItem items = 2;
}

message GetQuoteResponse {
Money cost_usd = 1;
}

message ShipOrderRequest {
Address address = 1;
repeated CartItem items = 2;
}

message ShipOrderResponse {
string tracking_id = 1;
}

message Address {
string street_address = 1;
string city = 2;
string state = 3;
string country = 4;
string zip_code = 5;
}

// -----------------Currency service-----------------

service CurrencyService {
rpc GetSupportedCurrencies(Empty) returns (GetSupportedCurrenciesResponse) {}
rpc Convert(CurrencyConversionRequest) returns (Money) {}
}

// Represents an amount of money with its currency type.
message Money {
// The 3-letter currency code defined in ISO 4217.
string currency_code = 1;

// The whole units of the amount.
// For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
int64 units = 2;

// Number of nano (10^-9) units of the amount.
// The value must be between -999,999,999 and +999,999,999 inclusive.
// If `units` is positive, `nanos` must be positive or zero.
// If `units` is zero, `nanos` can be positive, zero, or negative.
// If `units` is negative, `nanos` must be negative or zero.
// For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
int32 nanos = 3;
}

message GetSupportedCurrenciesResponse {
// The 3-letter currency code defined in ISO 4217.
repeated string currency_codes = 1;
}

message CurrencyConversionRequest {
Money from = 1;

// The 3-letter currency code defined in ISO 4217.
string to_code = 2;
}

// -------------Payment service-----------------

service PaymentService {
rpc Charge(ChargeRequest) returns (ChargeResponse) {}
}

message CreditCardInfo {
string credit_card_number = 1;
int32 credit_card_cvv = 2;
int32 credit_card_expiration_year = 3;
int32 credit_card_expiration_month = 4;
}

message ChargeRequest {
Money amount = 1;
CreditCardInfo credit_card = 2;
}

message ChargeResponse {
string transaction_id = 1;
}

// -------------Email service-----------------

service EmailService {
rpc SendOrderConfirmation(SendOrderConfirmationRequest) returns (Empty) {}
}

message OrderItem {
CartItem item = 1;
Money cost = 2;
}

message OrderResult {
string order_id = 1;
string shipping_tracking_id = 2;
Money shipping_cost = 3;
Address shipping_address = 4;
repeated OrderItem items = 5;
}

message SendOrderConfirmationRequest {
string email = 1;
OrderResult order = 2;
}


// -------------Checkout service-----------------

service CheckoutService {
rpc PlaceOrder(PlaceOrderRequest) returns (PlaceOrderResponse) {}
}

message PlaceOrderRequest {
string user_id = 1;
string user_currency = 2;

Address address = 3;
string email = 5;
CreditCardInfo credit_card = 6;
}

message PlaceOrderResponse {
OrderResult order = 1;
}

// ------------Ad service------------------

service AdService {
rpc GetAds(AdRequest) returns (AdResponse) {}
}

message AdRequest {
// List of important key words from the current page describing the context.
repeated string context_keys = 1;
}

message AdResponse {
repeated Ad ads = 1;
}

message Ad {
// url to redirect to when an ad is clicked.
string redirect_url = 1;

// short advertisement text to display.
string text = 2;
}

// ------------Feature flag service------------------

service FeatureFlagService {
rpc GetFlag(GetFlagRequest) returns (GetFlagResponse) {}
rpc CreateFlag(CreateFlagRequest) returns (CreateFlagResponse) {}
rpc UpdateFlag(UpdateFlagRequest) returns (UpdateFlagResponse) {}
rpc ListFlags(ListFlagsRequest) returns (ListFlagsResponse) {}
rpc DeleteFlag(DeleteFlagRequest) returns (DeleteFlagResponse) {}
}

message Flag {
string name = 1;
string description = 2;
bool enabled = 3;
google.protobuf.Timestamp created_at = 4;
google.protobuf.Timestamp updated_at = 5;
}

message GetFlagRequest {
string name = 1;
}

message GetFlagResponse {
Flag flag = 1;
}

message CreateFlagRequest {
string name = 1;
string description = 2;
bool enabled = 3;
}

message CreateFlagResponse {
Flag flag = 1;
}

message UpdateFlagRequest {
string name = 1;
bool enabled = 2;
}

message UpdateFlagResponse {}

message ListFlagsRequest {}

message ListFlagsResponse {
repeated Flag flag = 1;
}

message DeleteFlagRequest {
string name = 1;
}

message DeleteFlagResponse {}
protobufFile: ../../../../pb/demo.proto
address: adservice:9555
method: oteldemo.AdService.GetAds
request: |-
Expand Down
Loading