From 5cfbab54a517a93506c87807bca8a6d9e01e72fd Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 12 Apr 2025 08:02:04 +0000 Subject: [PATCH 1/3] add instructor into readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index f200b1a..b68c1bc 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,19 @@ Run with Maven command: mvn spring-boot:run ``` +Run in container: + +```shell +docker run -p 8080:8080 ghcr.io/devops-ws/learn-springboot:master +``` + Change the listen port: ```shell java -jar demo.jar --server.port=8081 ``` +The default username is `admin`, and password is: `123456`. + ## OpenAPI definition You can visit it via: http://localhost:8080/v3/api-docs From f4f2ffc05decc4dfafefd029d8d3d301259a50d9 Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 12 Apr 2025 08:28:31 +0000 Subject: [PATCH 2/3] add e2e testing --- Makefile | 2 +- README.md | 2 +- e2e/test-suite.yaml | 12 ++++++++ .../github/devopsws/demo/DemoApplication.java | 2 ++ .../devopsws/demo/service/CacheService.java | 29 +++++++++++++++++++ .../github/devopsws/demo/service/GraphQL.java | 3 -- 6 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 src/main/java/io/github/devopsws/demo/service/CacheService.java diff --git a/Makefile b/Makefile index b62857a..f0470b6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ build-image: docker build . -t ghcr.io/devops-ws/learn-springboot:master -test-e2e: +run-e2e: cd e2e && ./start.sh run-demo: cd e2e && docker compose up server diff --git a/README.md b/README.md index b68c1bc..c94b3fb 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This project aims to verify [linuxsuren/api-testing](https://github.com/LinuxSuR Run E2E testing: ```shell -make build-image test-e2e +make build-image run-e2e ``` Run with Maven command: diff --git a/e2e/test-suite.yaml b/e2e/test-suite.yaml index 82e7edf..9f2fd44 100644 --- a/e2e/test-suite.yaml +++ b/e2e/test-suite.yaml @@ -5,6 +5,8 @@ api: | {{default "http://localhost:8080" (env "SERVER")}} param: auth: Basic {{ base64 "admin:123456" }} + randNum: | + {{randInt 1 1000}} items: - name: health request: @@ -120,3 +122,13 @@ items: expect: header: Content-Type: application/octet-stream + +## cache +- name: cache + request: + api: /cache?delay={{ .param.randNum }} + header: + Authorization: "{{ .param.auth }}" + expect: + bodyFieldsExpect: + pageCount: "{{ .param.randNum }}" diff --git a/src/main/java/io/github/devopsws/demo/DemoApplication.java b/src/main/java/io/github/devopsws/demo/DemoApplication.java index 50a769b..8f7f62e 100644 --- a/src/main/java/io/github/devopsws/demo/DemoApplication.java +++ b/src/main/java/io/github/devopsws/demo/DemoApplication.java @@ -4,8 +4,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; @EnableTRpc +@EnableCaching @SpringBootApplication public class DemoApplication { diff --git a/src/main/java/io/github/devopsws/demo/service/CacheService.java b/src/main/java/io/github/devopsws/demo/service/CacheService.java new file mode 100644 index 0000000..5c2f7a6 --- /dev/null +++ b/src/main/java/io/github/devopsws/demo/service/CacheService.java @@ -0,0 +1,29 @@ +package io.github.devopsws.demo.service; + +import io.github.devopsws.demo.model.Book; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/cache") +public class CacheService { + + @GetMapping("") + @Cacheable("books") + public Book index(Integer delay) { + System.out.println("getting book with cache feature"); + if (delay == null) { + delay = 0; + } + try { + Thread.sleep(delay); + } catch (Exception e) { + e.printStackTrace(); + } + + Book book = new Book("book-1", "Effective Java", delay, "author-1"); + return book; + } +} diff --git a/src/main/java/io/github/devopsws/demo/service/GraphQL.java b/src/main/java/io/github/devopsws/demo/service/GraphQL.java index 094d75c..5a04414 100644 --- a/src/main/java/io/github/devopsws/demo/service/GraphQL.java +++ b/src/main/java/io/github/devopsws/demo/service/GraphQL.java @@ -3,11 +3,8 @@ import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.QueryMapping; import org.springframework.graphql.data.method.annotation.MutationMapping; -import org.springframework.graphql.data.method.annotation.SchemaMapping; import org.springframework.stereotype.Controller; import io.github.devopsws.demo.model.Book; -import org.springframework.security.access.annotation.Secured; -import org.springframework.security.access.prepost.PreAuthorize; @Controller public class GraphQL { From eef2ef27c5c3697adb5b32c7d1b9e3fd00caccb1 Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 12 Apr 2025 08:30:47 +0000 Subject: [PATCH 3/3] update make command --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 43af357..7585d34 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -26,4 +26,4 @@ jobs: sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose export OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]') - make test-e2e + make run-e2e