Skip to content

Commit

Permalink
fix: add test
Browse files Browse the repository at this point in the history
`+` test code
`#` code format and convention added
`-` vault script
`+` jacoco setup
`+` APM setup(Prometheus + Grafana)
`#` other minor fixes during test

BREAK CHANGES: convention adopted `palantir`
  • Loading branch information
laigasus committed May 4, 2024
1 parent 4ed59f8 commit 7e8bf7b
Show file tree
Hide file tree
Showing 197 changed files with 4,662 additions and 970 deletions.
1,204 changes: 1,204 additions & 0 deletions .editorconfig

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
path: .qodana/code-coverage

- name: 'Qodana Scan'
uses: JetBrains/qodana-action@v2023.3
uses: JetBrains/qodana-action@v2024.1.3
with:
args: --baseline,qodana.sarif.json
env:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,6 @@ out/
### VS Code ###
.vscode/
/application.log

### fixturemonkey ###
.jqwik-database
29 changes: 29 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import java.text.SimpleDateFormat

plugins {
id 'org.flywaydb.flyway' version '+'
id 'org.springdoc.openapi-gradle-plugin' version '+'
id 'io.swagger.swaggerhub' version '+'
}

bootJar.mainClass = 'blisgo.app.BlisgoApplication'
Expand All @@ -16,11 +20,36 @@ dependencies {
// flyway migration
implementation 'org.flywaydb:flyway-core:+'
implementation 'org.flywaydb:flyway-mysql:+'

// monitor
//implementation 'org.springframework.boot:spring-boot-starter-actuator'
//implementation 'io.micrometer:micrometer-registry-prometheus'
}

flyway {
url = System.getenv("MYSQL_URL")
user = System.getenv("MYSQLUSER")
password = System.getenv("MYSQLPASSWORD")
locations = ['filesystem:src/main/resources/db/migration']
}

openApi {
apiDocsUrl.set('http://localhost:8080/v3/api-docs.yaml')
outputDir.set(file("${project.rootDir}/build/docs"))
outputFileName.set('swagger.yaml')
waitTimeInSeconds.set(10)
customBootRun {
args.set(['--spring.profiles.active=dev'])
}
}

swaggerhubUpload {
def dateVersion = new SimpleDateFormat('yyyy-MM-dd').format(new Date())

api 'blisgo'
owner 'okjaeook'
version dateVersion
format 'yaml'
inputFile "${project.rootDir}/build/docs/swagger.yaml"
token System.getenv('SWAGGERHUB_API_KEY')
}
14 changes: 5 additions & 9 deletions app/src/main/java/blisgo/app/BlisgoApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,17 @@
import blisgo.infrastructure.external.ExternalRoot;
import blisgo.infrastructure.internal.InternalRoot;
import blisgo.usecase.UseCaseRoot;
import java.time.ZoneOffset;
import java.util.TimeZone;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

import java.time.ZoneOffset;
import java.util.TimeZone;

@EnableConfigurationProperties
@SpringBootApplication(scanBasePackageClasses = {
InternalRoot.class,
DomainRoot.class,
ExternalRoot.class,
UseCaseRoot.class
})
@SpringBootApplication(
scanBasePackageClasses = {InternalRoot.class, DomainRoot.class, ExternalRoot.class, UseCaseRoot.class})
public class BlisgoApplication {

public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone(ZoneOffset.UTC));
SpringApplication.run(BlisgoApplication.class, args);
Expand Down
1 change: 1 addition & 0 deletions app/src/main/resources/application-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ spring:
format_sql: true
highlight_sql: true
use_sql_comments: true
show_sql: true
ejb:
naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy
thymeleaf:
Expand Down
14 changes: 13 additions & 1 deletion app/src/main/resources/application-infra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,16 @@ server:
whitelabel:
enabled: true
compression:
enabled: true
enabled: true

# apm disabled due to infra bill
#management:
# endpoints:
# web:
# exposure:
# include: '*'
# endpoint:
# metrics:
# enabled: true
# prometheus:
# enabled: true
68 changes: 56 additions & 12 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
buildscript {
repositories {
mavenCentral()
}
plugins {
id 'java'
id 'org.springframework.boot' version '+'
id 'org.flywaydb.flyway' version '+'
id 'io.spring.dependency-management' version '+'
id 'com.palantir.java-format' version '+'
id 'jacoco-report-aggregation'
id 'jvm-test-suite'
}

dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:+'
classpath 'org.flywaydb:flyway-mysql:+'
}
bootJar.enabled = false

repositories {
mavenCentral()
}

subprojects {
Expand All @@ -16,14 +21,18 @@ subprojects {
plugin 'java'
plugin 'org.springframework.boot'
plugin 'io.spring.dependency-management'
plugin 'jacoco'
plugin 'com.palantir.java-format'
plugin 'jacoco-report-aggregation'
plugin 'jvm-test-suite'
}

repositories {
mavenCentral()
}

dependencies {
jacocoAggregation project(":app")

developmentOnly 'org.springframework.boot:spring-boot-devtools'

// componentScan
Expand Down Expand Up @@ -56,24 +65,59 @@ subprojects {
testImplementation 'org.testcontainers:junit-jupiter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-starter:+'
testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-jackson:+'
testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-jakarta-validation:+'

// hibernate & jakarta validator
implementation 'org.springframework.boot:spring-boot-starter-validation'
}

def QDomains = []
for (qPattern in '*.QA'..'*.QZ') {
QDomains.add(qPattern + '*')
}

def jacocoExcludePatterns = [
"**/*Application*",
"**/*Config*",
"**/*Exception*",
"**/*Request*",
"**/*Response*",
"**/*DTO*",
"**/*Port*",
"**/*Command*",
"**/*Query*",
"**/test/**",
"**/resources/**",
"**/Jpa*",
"**/*Entity",
]

test {
useJUnitPlatform()
finalizedBy 'jacocoTestReport'
finalizedBy jacocoTestReport
}

jacoco {
toolVersion = '+'
toolVersion = "+"
setReportsDirectory(file("${rootDir}/.qodana/code-coverage"))
}

jacocoTestReport {
dependsOn test
reports {
xml.required = true
html.required = false
}
finalizedBy 'jacocoTestCoverageVerification'
afterEvaluate {
classDirectories.setFrom(
files(classDirectories.files.collect {
fileTree(dir: it, excludes: jacocoExcludePatterns + QDomains)
}))
}

finalizedBy jacocoTestCoverageVerification
}

jacocoTestCoverageVerification {
Expand Down
25 changes: 25 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,30 @@ services:
ports:
- 6379:6379

# prometheus:
# image: prom/prometheus:latest
# container_name: blisgo-prometheus
# volumes:
# - ./prometheus.yml:/etc/prometheus/prometheus.yml
# command:
# - '--config.file=/etc/prometheus/prometheus.yml'
# restart: unless-stopped
# ports:
# - 9090:9090
#
# grafana:
# image: grafana/grafana:latest
# container_name: blisgo-grafana
# ports:
# - 3000:3000
# environment:
# - GF_SECURITY_ADMIN_PASSWORD=admin
# - GF_SECURITY_ADMIN_USER=admin
# - GF_USERS_ALLOW_SIGN_UP=false
# - GF_USERS_ALLOW_ORG_CREATE=false
# volumes:
# - ./grafana:/var/lib/grafana
# restart: unless-stopped

networks:
network:
3 changes: 1 addition & 2 deletions domain/src/main/java/blisgo/domain/DomainRoot.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackageClasses = DomainRoot.class)
public interface DomainRoot {
}
public interface DomainRoot {}
10 changes: 10 additions & 0 deletions domain/src/main/java/blisgo/domain/base/Constants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package blisgo.domain.base;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Constants {
public static final String HEX_COLOR_PATTERN = "^#([A-Fa-f0-9]{6})$";
public static final String HTTP_PROTOCOL = "^(http://|https://).*$";
}
2 changes: 1 addition & 1 deletion domain/src/main/java/blisgo/domain/base/Events.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ public static void raise(Object event) {
publisher.publishEvent(event);
}
}
}
}
13 changes: 12 additions & 1 deletion domain/src/main/java/blisgo/domain/common/Author.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,26 @@
package blisgo.domain.common;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@Getter
@AllArgsConstructor(staticName = "of")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Author {
@Email
@NotNull
private String email;

@NotEmpty
private String name;

@NotNull
private Picture picture;
}
}
13 changes: 12 additions & 1 deletion domain/src/main/java/blisgo/domain/common/Content.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
package blisgo.domain.common;

import lombok.*;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@Getter
@AllArgsConstructor(staticName = "of")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Content {

@NotEmpty
private String text;

@NotNull
private Picture thumbnail;

private String preview;
}
1 change: 1 addition & 0 deletions domain/src/main/java/blisgo/domain/common/Hashtag.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
@AllArgsConstructor(staticName = "of")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Hashtag {

private String content;
}
6 changes: 6 additions & 0 deletions domain/src/main/java/blisgo/domain/common/Picture.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package blisgo.domain.common;

import blisgo.domain.base.Constants;
import jakarta.validation.constraints.Pattern;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@Getter
@AllArgsConstructor(staticName = "of")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Picture {

@Pattern(regexp = Constants.HTTP_PROTOCOL)
private String url;
}
Loading

0 comments on commit 7e8bf7b

Please sign in to comment.