Merge remote-tracking branch 'upstream/develop' into config_change_verify

pull/776/head
airoger 3 years ago
commit 4fb60fd185

@ -33,8 +33,8 @@ jobs:
with: with:
image_size: 50 image_size: 50
columns_per_row: 9 columns_per_row: 9
committer_email: machen@apache.org committer_email: m7798432@163.com
committer_username: itmachen committer_username: pirme
commit_message: 'Update the list of contributors' commit_message: 'Update the list of contributors'
env: env:
GITHUB_TOKEN: ${{ secrets.ACTION_TOKEN }} GITHUB_TOKEN: ${{ secrets.ACTION_TOKEN }}

@ -101,17 +101,17 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
</a> </a>
</td> </td>
<td align="center"> <td align="center">
<a href="https://github.com/shanjianq"> <a href="https://github.com/BigXin0109">
<img src="https://avatars.githubusercontent.com/u/49084314?v=4" width="50;" alt="shanjianq"/> <img src="https://avatars.githubusercontent.com/u/24769514?v=4" width="50;" alt="BigXin0109"/>
<br /> <br />
<sub><b>Shanjianq</b></sub> <sub><b>BigXin0109</b></sub>
</a> </a>
</td> </td>
<td align="center"> <td align="center">
<a href="https://github.com/BigXin0109"> <a href="https://github.com/shanjianq">
<img src="https://avatars.githubusercontent.com/u/24769514?v=4" width="50;" alt="BigXin0109"/> <img src="https://avatars.githubusercontent.com/u/49084314?v=4" width="50;" alt="shanjianq"/>
<br /> <br />
<sub><b>BigXin0109</b></sub> <sub><b>Shanjianq</b></sub>
</a> </a>
</td> </td>
<td align="center"> <td align="center">
@ -299,6 +299,13 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<sub><b>游祖光</b></sub> <sub><b>游祖光</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/puppet4">
<img src="https://avatars.githubusercontent.com/u/28887178?v=4" width="50;" alt="puppet4"/>
<br />
<sub><b>Tudo</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/2EXP"> <a href="https://github.com/2EXP">
<img src="https://avatars.githubusercontent.com/u/26007713?v=4" width="50;" alt="2EXP"/> <img src="https://avatars.githubusercontent.com/u/26007713?v=4" width="50;" alt="2EXP"/>
@ -312,15 +319,15 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Alic</b></sub> <sub><b>Alic</b></sub>
</a> </a>
</td> </td></tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/CalebZYC"> <a href="https://github.com/CalebZYC">
<img src="https://avatars.githubusercontent.com/u/42887532?v=4" width="50;" alt="CalebZYC"/> <img src="https://avatars.githubusercontent.com/u/42887532?v=4" width="50;" alt="CalebZYC"/>
<br /> <br />
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td></tr> </td>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/Hibernate5666"> <a href="https://github.com/Hibernate5666">
<img src="https://avatars.githubusercontent.com/u/30147527?v=4" width="50;" alt="Hibernate5666"/> <img src="https://avatars.githubusercontent.com/u/30147527?v=4" width="50;" alt="Hibernate5666"/>
@ -376,6 +383,14 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Alexli</b></sub> <sub><b>Alexli</b></sub>
</a> </a>
</td></tr>
<tr>
<td align="center">
<a href="https://github.com/baymax55">
<img src="https://avatars.githubusercontent.com/u/35788491?v=4" width="50;" alt="baymax55"/>
<br />
<sub><b>Baymax55</b></sub>
</a>
</td> </td>
<td align="center"> <td align="center">
<a href="https://github.com/qizhongju"> <a href="https://github.com/qizhongju">
@ -383,8 +398,7 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Bug搬运工</b></sub> <sub><b>Bug搬运工</b></sub>
</a> </a>
</td></tr> </td>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/san4j"> <a href="https://github.com/san4j">
<img src="https://avatars.githubusercontent.com/u/40364355?v=4" width="50;" alt="san4j"/> <img src="https://avatars.githubusercontent.com/u/40364355?v=4" width="50;" alt="san4j"/>
@ -433,7 +447,8 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td> </td></tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/stronglong"> <a href="https://github.com/stronglong">
<img src="https://avatars.githubusercontent.com/u/15846157?v=4" width="50;" alt="stronglong"/> <img src="https://avatars.githubusercontent.com/u/15846157?v=4" width="50;" alt="stronglong"/>
@ -447,8 +462,7 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td></tr> </td>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/jialei-jack"> <a href="https://github.com/jialei-jack">
<img src="https://avatars.githubusercontent.com/u/93201205?v=4" width="50;" alt="jialei-jack"/> <img src="https://avatars.githubusercontent.com/u/93201205?v=4" width="50;" alt="jialei-jack"/>
@ -477,13 +491,6 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/puppet4">
<img src="https://avatars.githubusercontent.com/u/28887178?v=4" width="50;" alt="puppet4"/>
<br />
<sub><b>Tudo</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/Nhxz"> <a href="https://github.com/Nhxz">
<img src="https://avatars.githubusercontent.com/u/72447160?v=4" width="50;" alt="Nhxz"/> <img src="https://avatars.githubusercontent.com/u/72447160?v=4" width="50;" alt="Nhxz"/>
@ -504,15 +511,15 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Wangjie</b></sub> <sub><b>Wangjie</b></sub>
</a> </a>
</td> </td></tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/wangyi123456"> <a href="https://github.com/wangyi123456">
<img src="https://avatars.githubusercontent.com/u/25248959?v=4" width="50;" alt="wangyi123456"/> <img src="https://avatars.githubusercontent.com/u/25248959?v=4" width="50;" alt="wangyi123456"/>
<br /> <br />
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td></tr> </td>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/Williamren97"> <a href="https://github.com/Williamren97">
<img src="https://avatars.githubusercontent.com/u/43086401?v=4" width="50;" alt="Williamren97"/> <img src="https://avatars.githubusercontent.com/u/43086401?v=4" width="50;" alt="Williamren97"/>
@ -568,15 +575,15 @@ Hippo-4J 通过对 JDK 线程池增强,以及扩展三方框架底层线程池
<br /> <br />
<sub><b>Null</b></sub> <sub><b>Null</b></sub>
</a> </a>
</td> </td></tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/li-xiao-shuang"> <a href="https://github.com/li-xiao-shuang">
<img src="https://avatars.githubusercontent.com/u/34903552?v=4" width="50;" alt="li-xiao-shuang"/> <img src="https://avatars.githubusercontent.com/u/34903552?v=4" width="50;" alt="li-xiao-shuang"/>
<br /> <br />
<sub><b>李晓双 Li Xiao Shuang</b></sub> <sub><b>李晓双 Li Xiao Shuang</b></sub>
</a> </a>
</td></tr> </td>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/oreoft"> <a href="https://github.com/oreoft">
<img src="https://avatars.githubusercontent.com/u/51789848?v=4" width="50;" alt="oreoft"/> <img src="https://avatars.githubusercontent.com/u/51789848?v=4" width="50;" alt="oreoft"/>

@ -12,7 +12,19 @@ Docker 镜像默认使用内置 H2 数据库,数据持久化到 Docker 容器
docker run -d -p 6691:6691 --name hippo4j-server hippo4j/hippo4j-server docker run -d -p 6691:6691 --name hippo4j-server hippo4j/hippo4j-server
``` ```
访问 Server 控制台,路径 `http://localhost:6691/index.html`默认用户名密码admin / 123456 或者,底层存储数据库切换为 MySQL。`DATASOURCE_HOST` 需要切换为本地 IP不能使用 `127.0.0.1``localhost`
```shell
docker run -d -p 6691:6691 --name hippo4j-server \
-e DATASOURCE_HOST=xxx.xxx.xxx.xxx \
-e DATASOURCE_PORT=3306 \
-e DATASOURCE_DB=hippo4j_manager \
-e DATASOURCE_USERNAME=root \
-e DATASOURCE_PASSWORD=root \
hippo4j/hippo4j-server
```
访问 Server 控制台,路径 `http://localhost:6691/index.html` 默认用户名密码admin / 123456
## 镜像构建 ## 镜像构建

@ -41,7 +41,7 @@ public class GroupKey {
for (int i = 1; i < params.length - 1; i++) { for (int i = 1; i < params.length - 1; i++) {
groupKey.append(params[i]).append(GROUP_KEY_DELIMITER); groupKey.append(params[i]).append(GROUP_KEY_DELIMITER);
} }
groupKey.append(params[params.length]); groupKey.append(params[params.length - 1]);
return groupKey.toString(); return groupKey.toString();
} }

@ -17,5 +17,19 @@
package cn.hippo4j.common.function; package cn.hippo4j.common.function;
import cn.hippo4j.common.toolkit.Assert;
import java.math.BigDecimal;
import org.junit.Test;
public final class MatcherFunctionTest { public final class MatcherFunctionTest {
public static <T> boolean matchTest(Matcher<T> matcher, T value) {
return matcher.match(value);
}
@Test
public void assertMatch() {
Assert.isTrue(matchTest(Boolean.TRUE::equals, true));
Assert.isTrue(matchTest(BigDecimal.ZERO::equals, BigDecimal.ZERO));
}
} }

@ -17,5 +17,67 @@
package cn.hippo4j.common.toolkit; package cn.hippo4j.common.toolkit;
public final class GroupKeyTest { import org.checkerframework.checker.units.qual.A;
} import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.*;
public class GroupKeyTest {
@Test
public void getKey() {
String dataId = "dataId";
String group = "group";
String datumStr = "datumStr";
String expected = "dataId+group+datumStr";
String key = GroupKey.getKey(dataId, group, datumStr);
Assert.isTrue(key.equals(expected));
}
@Test
public void testGetKey() {
String dataId = "dataId";
String group = "group";
String expected = "dataId+group";
String key = GroupKey.getKey(dataId, group);
Assert.isTrue(key.equals(expected));
}
@Test
public void testGetKey1() {
String[] strings = {"dataId", "group", "datumStr"};
String expected = "dataId+group+datumStr";
String key = GroupKey.getKey(strings);
Assert.isTrue(key.equals(expected));
}
@Test
public void getKeyTenant() {
String dataId = "dataId";
String group = "group";
String datumStr = "datumStr";
String expected = "dataId+group+datumStr";
String keyTenant = GroupKey.getKeyTenant(dataId, group, datumStr);
Assert.isTrue(keyTenant.equals(expected));
}
@Test
public void parseKey() {
String groupKey = "prescription+dynamic-threadpool-example+message-consume+12";
String[] strings = GroupKey.parseKey(groupKey);
Assert.isTrue(strings.length == 4);
}
@Test
public void urlEncode() {
String str = "hello+World%";
String expected = "hello%2BWorld%25";
StringBuilder stringBuilder = new StringBuilder();
GroupKey.urlEncode(str, stringBuilder);
Assert.isTrue(stringBuilder.toString().contains(expected));
}
}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
.waves-ripple{position:absolute;border-radius:100%;background-color:rgba(0,0,0,.15);background-clip:padding-box;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transform:scale(0);transform:scale(0);opacity:1}.waves-ripple.z-active{opacity:0;-webkit-transform:scale(2);transform:scale(2);-webkit-transition:opacity 1.2s ease-out,-webkit-transform .6s ease-out;transition:opacity 1.2s ease-out,-webkit-transform .6s ease-out;transition:opacity 1.2s ease-out,transform .6s ease-out;transition:opacity 1.2s ease-out,transform .6s ease-out,-webkit-transform .6s ease-out}.dashboard-editor-container[data-v-490e92e5]{padding:32px;background-color:#f0f2f5;position:relative;min-height:100vh} .waves-ripple{position:absolute;border-radius:100%;background-color:rgba(0,0,0,.15);background-clip:padding-box;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transform:scale(0);transform:scale(0);opacity:1}.waves-ripple.z-active{opacity:0;-webkit-transform:scale(2);transform:scale(2);-webkit-transition:opacity 1.2s ease-out,-webkit-transform .6s ease-out;transition:opacity 1.2s ease-out,-webkit-transform .6s ease-out;transition:opacity 1.2s ease-out,transform .6s ease-out;transition:opacity 1.2s ease-out,transform .6s ease-out,-webkit-transform .6s ease-out}.dashboard-editor-container[data-v-a25e0782]{padding:32px;background-color:#f0f2f5;position:relative;min-height:100vh}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -17,33 +17,24 @@
FROM openjdk:8-jre-slim FROM openjdk:8-jre-slim
MAINTAINER lijianxin MAINTAINER lijianxin
ENV MYSQL_HOST="127.0.0.1" \ ENV DATASOURCE_MODE="h2" \
MYSQL_PORT="3306" \ DATASOURCE_HOST="127.0.0.1" \
MYSQL_DB="hippo4j_manager" \ DATASOURCE_PORT="3306" \
MYSQL_USERNAME="root" \ DATASOURCE_DB="hippo4j_manager" \
MYSQL_PASSWORD="root" \ DATASOURCE_USERNAME="root" \
DATASOURCE_PASSWORD="root" \
BASE_DIR="/opt/hippo4j" BASE_DIR="/opt/hippo4j"
ENV TZ=PRC ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD conf/hippo4j-logback.xml ${BASE_DIR}/logback.xml ADD conf/hippo4j-logback.xml ${BASE_DIR}/conf/hippo4j-logback.xml
ADD conf/application.properties ${BASE_DIR}/conf/application.properties
ADD target/hippo4j-server.jar ${BASE_DIR}/hippo4j-server.jar ADD target/hippo4j-server.jar ${BASE_DIR}/hippo4j-server.jar
ADD docker-startup.sh ${BASE_DIR}/docker-startup.sh
WORKDIR ${BASE_DIR} WORKDIR ${BASE_DIR}
RUN chmod +x docker-startup.sh
ENTRYPOINT ["sh","-c","java -jar \ ENTRYPOINT ["./docker-startup.sh"]
-Xloggc:${BASE_DIR}/hippo4j_gc.log -verbose:gc -XX:+PrintGCDetails \
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M \
-XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/java_heapdump.hprof \
-Xms1024m -Xmx1024m -Xmn512m \
-Dhippo4j.standalone=true -Dhippo4j.home=${BASE_DIR} \
hippo4j-server.jar \
--server.max-http-header-size=524288 \
--server.tomcat.basedir=${BASE_DIR}/tomcat \
--logging.config=${BASE_DIR}/logback.xml \
--spring.profiles.active=h2 \
--spring.datasource.url=jdbc:h2:file:${BASE_DIR}/h2_hippo4j;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL \
"]

@ -47,6 +47,7 @@
</logger> </logger>
<root level="${logLevel}"> <root level="${logLevel}">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE-ALL"/> <appender-ref ref="FILE-ALL"/>
<appender-ref ref="FILE-ERROR"/> <appender-ref ref="FILE-ERROR"/>
</root> </root>

@ -0,0 +1,44 @@
#!/bin/bash
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
export SERVER="hippo4j-server"
JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/hippo4j_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
JAVA_OPT="${JAVA_OPT} -Xms1024m -Xmx1024m -Xmn512m"
JAVA_OPT="${JAVA_OPT} -Dhippo4j.standalone=true"
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
JAVA_OPT="${JAVA_OPT} -Dhippo4j.home=${BASE_DIR}"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} --logging.config=${BASE_DIR}/conf/hippo4j-logback.xml"
JAVA_OPT="${JAVA_OPT} --server.max-http-header-size=524288"
JAVA_OPT="${JAVA_OPT} --server.tomcat.basedir=${BASE_DIR}/bin"
if [[ "${DATASOURCE_MODE}" == "mysql" ]]; then
JAVA_OPT="${JAVA_OPT} --spring.datasource.url=\"jdbc:mysql://${DATASOURCE_HOST}:${DATASOURCE_PORT}/${DATASOURCE_DB}?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8\" "
JAVA_OPT="${JAVA_OPT} ---spring.datasource.username=${DATASOURCE_USERNAME} --spring.datasource.password=${DATASOURCE_PASSWORD} "
elif [[ "${DATASOURCE_MODE}" == "h2" ]]; then
JAVA_OPT="${JAVA_OPT} --spring.profiles.active=h2 --spring.datasource.url=jdbc:h2:file:${BASE_DIR}/h2_hippo4j;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL"
else
echo "hippo4j DATASOURCE_MODE is error, value ${DATASOURCE_MODE}, use default h2"
fi
if [ ! -d "${BASE_DIR}/logs" ]; then
mkdir ${BASE_DIR}/logs
fi
echo "$JAVA ${JAVA_OPT}"
echo "hippo4j is starting with standalone"
if [ ! -f "${BASE_DIR}/logs/start.out" ]; then
touch "${BASE_DIR}/logs/start.out"
fi
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
java -jar hippo4j-server.jar ${JAVA_OPT}
echo "hippo4j is startingyou can check the ${BASE_DIR}/logs/"
Loading…
Cancel
Save