branch develop updated (ac442375 -> 2f360434)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git from ac442375 utilisation de JWT pour le token de session new 2f360434 Un point d'entré pour voir l'état du service REST The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 2f3604342a6938e87acafe0304fad3c90fe63dc2 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Nov 10 17:05:52 2017 +0100 Un point d'entré pour voir l'état du service REST Summary of changes: .../pollen/rest/api/PollenRestApiApplication.java | 4 +- .../rest/api/PollenRestApiRequestFilter.java | 4 +- .../{ConfigurationApi.java => TransverseApi.java} | 18 ++- .../src/main/resources/log4j.properties | 1 + .../src/main/resources/pollen-rest-api.properties | 1 + .../java/org/chorem/pollen/services/UnitHuman.java | 5 +- .../chorem/pollen/services/bean/PollenStatus.java | 139 +++++++++++++++++++++ .../services/config/PollenServicesConfig.java | 12 ++ .../services/service/ConfigurationService.java | 18 --- .../services/service/PollenServiceSupport.java | 4 +- .../pollen/services/service/TransverseService.java | 89 +++++++++++++ 11 files changed, 266 insertions(+), 29 deletions(-) rename pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/{ConfigurationApi.java => TransverseApi.java} (50%) create mode 100644 pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenStatus.java delete mode 100644 pollen-services/src/main/java/org/chorem/pollen/services/service/ConfigurationService.java create mode 100644 pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 2f3604342a6938e87acafe0304fad3c90fe63dc2 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Nov 10 17:05:52 2017 +0100 Un point d'entré pour voir l'état du service REST --- .../pollen/rest/api/PollenRestApiApplication.java | 4 +- .../rest/api/PollenRestApiRequestFilter.java | 4 +- .../{ConfigurationApi.java => TransverseApi.java} | 18 ++- .../src/main/resources/log4j.properties | 1 + .../src/main/resources/pollen-rest-api.properties | 1 + .../java/org/chorem/pollen/services/UnitHuman.java | 5 +- .../chorem/pollen/services/bean/PollenStatus.java | 139 +++++++++++++++++++++ .../services/config/PollenServicesConfig.java | 12 ++ .../services/service/ConfigurationService.java | 18 --- .../services/service/PollenServiceSupport.java | 4 +- .../pollen/services/service/TransverseService.java | 89 +++++++++++++ 11 files changed, 266 insertions(+), 29 deletions(-) diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java index bd133705..32bfed06 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiApplication.java @@ -41,7 +41,7 @@ import org.chorem.pollen.rest.api.exceptionMappers.TopiaNoResultExceptionMapper; import org.chorem.pollen.rest.api.v1.AuthApi; import org.chorem.pollen.rest.api.v1.ChoiceApi; import org.chorem.pollen.rest.api.v1.CommentApi; -import org.chorem.pollen.rest.api.v1.ConfigurationApi; +import org.chorem.pollen.rest.api.v1.TransverseApi; import org.chorem.pollen.rest.api.v1.DocApi; import org.chorem.pollen.rest.api.v1.FavoriteListApi; import org.chorem.pollen.rest.api.v1.FeedbackApi; @@ -71,7 +71,7 @@ public class PollenRestApiApplication extends Application { new AuthApi(), new ChoiceApi(), new CommentApi(), - new ConfigurationApi(), + new TransverseApi(), new DocApi(), new FavoriteListApi(), new PollApi(), diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiRequestFilter.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiRequestFilter.java index 35be8b2f..ad2e66b5 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiRequestFilter.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/PollenRestApiRequestFilter.java @@ -35,7 +35,7 @@ import org.chorem.pollen.services.PollenServiceContext; import org.chorem.pollen.services.PollenUIContext; import org.chorem.pollen.services.service.ChoiceService; import org.chorem.pollen.services.service.CommentService; -import org.chorem.pollen.services.service.ConfigurationService; +import org.chorem.pollen.services.service.TransverseService; import org.chorem.pollen.services.service.FavoriteListService; import org.chorem.pollen.services.service.FeedService; import org.chorem.pollen.services.service.FeedbackService; @@ -124,7 +124,7 @@ public class PollenRestApiRequestFilter implements ContainerRequestFilter, Conta FeedbackService.class, SocialAuthService.class, GtuService.class, - ConfigurationService.class, + TransverseService.class, MailBoxService.class); diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ConfigurationApi.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java similarity index 50% rename from pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ConfigurationApi.java rename to pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java index 844d5a0d..928cbf1d 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ConfigurationApi.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java @@ -1,7 +1,8 @@ package org.chorem.pollen.rest.api.v1; import org.chorem.pollen.services.bean.ConfigurationBean; -import org.chorem.pollen.services.service.ConfigurationService; +import org.chorem.pollen.services.bean.PollenStatus; +import org.chorem.pollen.services.service.TransverseService; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -16,14 +17,23 @@ import javax.ws.rs.core.MediaType; @Path("") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) -public class ConfigurationApi { +public class TransverseApi { @Path("configuration") @GET - public ConfigurationBean getConfiguration(@Context ConfigurationService configurationService) { + public ConfigurationBean getConfiguration(@Context TransverseService transverseService) { - return configurationService.getConfiguration(); + return transverseService.getConfiguration(); } + @Path("/status") + @GET + public PollenStatus getStatus(@Context TransverseService transverseService) { + + return transverseService.getStatus(); + + } + + } diff --git a/pollen-rest-api/src/main/resources/log4j.properties b/pollen-rest-api/src/main/resources/log4j.properties index ca563b4a..71cea7eb 100644 --- a/pollen-rest-api/src/main/resources/log4j.properties +++ b/pollen-rest-api/src/main/resources/log4j.properties @@ -23,6 +23,7 @@ log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{hh:mm:ss} %5p (%F:%L) %m%n log4j.logger.org.chorem.pollen=INFO +log4j.logger.org.chorem.pollen.services.service.mail=DEBUG log4j.logger.org.debux=INFO log4j.logger.org.hibernate.orm.deprecation=ERROR log4j.logger.com.zaxxer.hikari.HikariDataSource=ERROR diff --git a/pollen-rest-api/src/main/resources/pollen-rest-api.properties b/pollen-rest-api/src/main/resources/pollen-rest-api.properties index 4965f75a..fc964804 100644 --- a/pollen-rest-api/src/main/resources/pollen-rest-api.properties +++ b/pollen-rest-api/src/main/resources/pollen-rest-api.properties @@ -25,6 +25,7 @@ hibernate.connection.password=sa hibernate.connection.driver_class=org.h2.Driver #hibernate.hbm2ddl.auto=update pollen.version=${project.version} +pollen.buildDate=${maven.build.timestamp} hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider hibernate.hikari.minimumIdle=2 hibernate.hikari.maximumPoolSize=20 diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/UnitHuman.java b/pollen-services/src/main/java/org/chorem/pollen/services/UnitHuman.java index 8e920be7..762dfe8e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/UnitHuman.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/UnitHuman.java @@ -59,6 +59,9 @@ public enum UnitHuman { return prefix + unit; } - + public static String toHumanString(double value, String unit) { + UnitHuman unitHuman = getUnitHuman(value); + return String.format("%4.2f %s", unitHuman.getUnitValue(value), unitHuman.getUnit(unit)); + } } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenStatus.java b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenStatus.java new file mode 100644 index 00000000..822d0dda --- /dev/null +++ b/pollen-services/src/main/java/org/chorem/pollen/services/bean/PollenStatus.java @@ -0,0 +1,139 @@ +package org.chorem.pollen.services.bean; + +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class PollenStatus { + + protected String version; + + protected String buildDate; + + protected String encoding; + + protected boolean persistenceOk; + + protected long nbPolls; + + protected List<String> errors; + + protected boolean allOk; + + protected String memoryAllocated; + + protected String memoryUsed; + + protected String memoryFree; + + protected String memoryMax; + + protected double loadAverage; + + protected long duration; + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getBuildDate() { + return buildDate; + } + + public void setBuildDate(String buildDate) { + this.buildDate = buildDate; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + public String getEncoding() { + return encoding; + } + + public void setPersistenceOk(boolean persistenceOk) { + this.persistenceOk = persistenceOk; + } + + public boolean isPersistenceOk() { + return persistenceOk; + } + + public void setNbPolls(long nbPolls) { + this.nbPolls = nbPolls; + } + + public long getNbPolls() { + return nbPolls; + } + + public void setErrors(List<String> errors) { + this.errors = errors; + } + + public List<String> getErrors() { + return errors; + } + + public void setAllOk(boolean allOk) { + this.allOk = allOk; + } + + public boolean isAllOk() { + return allOk; + } + + public void setMemoryAllocated(String memoryAllocated) { + this.memoryAllocated = memoryAllocated; + } + + public String getMemoryAllocated() { + return memoryAllocated; + } + + public void setMemoryUsed(String memoryUsed) { + this.memoryUsed = memoryUsed; + } + + public String getMemoryUsed() { + return memoryUsed; + } + + public void setMemoryFree(String memoryFree) { + this.memoryFree = memoryFree; + } + + public String getMemoryFree() { + return memoryFree; + } + + public void setMemoryMax(String memoryMax) { + this.memoryMax = memoryMax; + } + + public String getMemoryMax() { + return memoryMax; + } + + public void setLoadAverage(double loadAverage) { + this.loadAverage = loadAverage; + } + + public double getLoadAverage() { + return loadAverage; + } + + public void setDuration(long duration) { + this.duration = duration; + } + + public long getDuration() { + return duration; + } +} diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/config/PollenServicesConfig.java b/pollen-services/src/main/java/org/chorem/pollen/services/config/PollenServicesConfig.java index e68feda5..591be692 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/config/PollenServicesConfig.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/config/PollenServicesConfig.java @@ -50,6 +50,9 @@ import java.util.TimeZone; */ public class PollenServicesConfig extends GeneratedPollenServicesConfig { + public static final String VERSION = "pollen.version"; + public static final String BUILD_DATE = "pollen.buildDate"; + private static final Log log = LogFactory.getLog(PollenServicesConfig.class); public PollenServicesConfig(String filename) { @@ -162,4 +165,13 @@ public class PollenServicesConfig extends GeneratedPollenServicesConfig { public UsersRight getUsersCanCreatePoll() { return UsersRight.valueOf(get().getOption(PollenServicesConfigOption.USERS_CAN_CREATE_POLL.getKey())); } + + public String getVersion() { + return get().getOption(VERSION); + } + + public String getBuildDate() { + return get().getOption(BUILD_DATE); + } + } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/ConfigurationService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/ConfigurationService.java deleted file mode 100644 index 74845e1d..00000000 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/ConfigurationService.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.chorem.pollen.services.service; - -import org.chorem.pollen.services.bean.ConfigurationBean; - -/** - * @author Sylvain Bavencoff - bavencoff@codelutin.com - */ -public class ConfigurationService extends PollenServiceSupport { - - public ConfigurationBean getConfiguration() { - ConfigurationBean bean = new ConfigurationBean(); - bean.setUserConnectedRequired(getPollenServiceConfig().isUserConnectedRequired()); - bean.setUsersCanCreatePoll(getPollenServiceConfig().getUsersCanCreatePoll()); - - return bean; - } - -} diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java index ddbe62fb..25dc27ab 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenServiceSupport.java @@ -128,8 +128,8 @@ public abstract class PollenServiceSupport implements PollenService { return newService(CommentService.class); } - protected ConfigurationService getConfigurationService() { - return newService(ConfigurationService.class); + protected TransverseService getConfigurationService() { + return newService(TransverseService.class); } protected FavoriteListService getFavoriteListService() { diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java new file mode 100644 index 00000000..36392c7e --- /dev/null +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java @@ -0,0 +1,89 @@ +package org.chorem.pollen.services.service; + +import com.google.common.collect.Lists; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.pollen.services.UnitHuman; +import org.chorem.pollen.services.bean.ConfigurationBean; +import org.chorem.pollen.services.bean.PollenStatus; + +import java.lang.management.ManagementFactory; +import java.lang.management.OperatingSystemMXBean; +import java.util.List; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class TransverseService extends PollenServiceSupport { + + private static final Log log = LogFactory.getLog(TransverseService.class); + + public ConfigurationBean getConfiguration() { + ConfigurationBean bean = new ConfigurationBean(); + bean.setUserConnectedRequired(getPollenServiceConfig().isUserConnectedRequired()); + bean.setUsersCanCreatePoll(getPollenServiceConfig().getUsersCanCreatePoll()); + + return bean; + } + + public PollenStatus getStatus() { + long statusStart = System.currentTimeMillis(); + List<String> errors = Lists.newArrayList(); + + + PollenStatus status = new PollenStatus(); + status.setVersion(getPollenServiceConfig().getVersion()); + status.setBuildDate(getPollenServiceConfig().getBuildDate()); + status.setEncoding(System.getProperty("file.encoding")); + + boolean persistenceOk = false; + long nbPolls = 0; + try { + nbPolls = getPollDao().count(); + persistenceOk = true; + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Erreur lors de la lecture du nombre de sondage ", eee); + } + errors.add(eee.getMessage()); + } + status.setPersistenceOk(persistenceOk); + status.setNbPolls(nbPolls); + status.setErrors(errors); + + boolean allOk = persistenceOk && errors.isEmpty(); + status.setAllOk(allOk); + + // Mémoire : Données brutes + Runtime runtime = Runtime.getRuntime(); + long freeMemoryOnAllocated = runtime.freeMemory(); // Mémoire libre (par rapport à la mémoire allouée) + long totalMemory = runtime.totalMemory(); // Mémoire allouée + long maxMemory = runtime.maxMemory(); // Mémoire totale (max) + + // Mémoire : Données déduites + long usedMemory = totalMemory - freeMemoryOnAllocated; // Mémoire utilisée (allouée - libre) + double usedPercent = ((double) usedMemory / maxMemory) * 100d; // Mémoire utilisée en pourcentage du max + long freeMemory = maxMemory - usedMemory; // Mémoire libre (par rapport au max) + double freePercent = 100d - usedPercent; // Mémoire libre en pourcentage du max + + status.setMemoryAllocated(UnitHuman.toHumanString(totalMemory, "o")); + status.setMemoryUsed(String.format("%s (%.2f%s)", UnitHuman.toHumanString(usedMemory, "o"), usedPercent, "%")); + status.setMemoryFree(String.format("%s (%.2f%s)", UnitHuman.toHumanString(freeMemory, "o"), freePercent, "%")); + status.setMemoryMax(UnitHuman.toHumanString(maxMemory, "o")); + + OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean(); + double systemLoadAverage = os.getSystemLoadAverage(); + status.setLoadAverage(systemLoadAverage); + + long statusEnd = System.currentTimeMillis(); + + status.setDuration(statusEnd - statusStart); + + if (log.isDebugEnabled()) { + log.debug("Status :" + status); + } + + return status; + } + +} -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm