naver / ngrinder Goto Github PK
View Code? Open in Web Editor NEWenterprise level performance testing solution
Home Page: naver.github.io/ngrinder
License: Apache License 2.0
enterprise level performance testing solution
Home Page: naver.github.io/ngrinder
License: Apache License 2.0
nGrinder 개발하시느라 수고가 많으세요
매번 감사하고 있습니다.
지금 저는 3000명정도 수용가능한 서버를 구축할려고 하고 있습니다.
그러기엔 가용한 부하가 많이 필요합니다.
ngrinder3.0.4와 ngrinder 3.1로 올해 업데이트 되면서 엄청 기뻤습니다. 아직 이해도가 부족하여 클러스터링까지는 못하겠지만 최대한 nGrinder 기능은 다 써볼려고 합니다.
이 2가지 부분이 자꾸 발목을 붙잡네요 ㅠㅠ
is there a way to generate fixed request per second load ? Grinder doc only talks about concurrent threads/processes, I cant find any thing on how to maintain the RPS ?
I am looking for something like this jmeter plugin :
http://jmeter-plugins.org/wiki/ThroughputShapingTimer/?utm_source=jpgc&utm_medium=link&utm_campaign=ThroughputShapingTimer
In the installation guide it mentions that
JAVA_OPTS="-Xms600m -Xmx1024m -XX:MaxPermSize=200m" should be sent
In windows it should be set as below
set JAVA_OPTS=-Xms600m -Xmx1024m -XX:MaxPermSize=200m
The script is reporting no errors in validation phase. However when I assigned it in the test, It show following error logs and is stopped by errors. Why?
잘 쓰고 있는 사용자입니다. 궁금한 점이 있는데요. 아래의 로그 내용은 .ngrinder/log/agent.log에 적힌 내용을 가져온 것 입니다. 이상하게 에이전트 별 가상사용자의 수, 그 중에서도 process를 1로 지정하면 잘 작동합니다만, 이것을 1이상으로 지정하면 아래와 같은 에러 메시지와 함께 종료됩니다. 왜 그런 걸까요?
(한글로 커뮤니케이션하는 것을 선호하지 않으시면 답장후에 삭제하셔도 됩니다 ^^)
15:28:50 INFO ConsoleFoundationEx.java:155 : console 10.160.223.188:12009 has been started
15:28:50 INFO PerfTestService.java:717 : egoing.net/script.py is being written in /usr/share/tomcat7/.ngrinder/perftest/10/dist for test perftest_10_admin
15:28:50 INFO PerfTestService.java:721 : File write is completed in /usr/share/tomcat7/.ngrinder/perftest/10/dist
15:28:50 INFO PerfTestService.java:659 : Grinder Properties : {grinder.threads=1, grinder.numberOfOldLogs=1, grinder.jvm.classpath=., grinder.test.id=test_10, grinder.duration=60000, grinder.sleepTimeVariation=0.2, grinder.runs=0, grinder.useConsole=true, grinder.script=script.py, grinder.jvm=java, grinder.security=false, grinder.processIncrement=0, grinder.sleepTimeFactor=1, ngrinder.etc.hosts=egoing.net, grinder.reportTimesToConsole=true, grinder.debug.singleprocess=false, grinder.processes=2, grinder.ignoreSampleCount=0, grinder.reportToConsole.interval=500, grinder.dcrinstrumentation=false, grinder.logProcessStreams=true}
15:29:15 INFO SingleConsole.java:1064 : Sampling is started
15:29:59 ERROR PerfTestRunnable.java:393 : Abnormal test 10 by SCRIPT_ERROR
15:30:00 ERROR PerfTestRunnable.java:445 : Terminate 10
15:30:00 INFO PerfTestService.java:1029 : Total Statistics for test 10 is {}
15:30:00 INFO SingleConsole.java:1080 : Sampling is stopped
15:30:00 INFO PerfTestRunnable.java:360 : remove monitors on [org.ngrinder.agent.model.AgentInfo@74fa477c[ip=egoing.net,port=13243,agentIdentity=,hostName=,status=,region=,approved=false,id=]] for perftest 10
15:30:00 ERROR MonitorAgentService.java:73 : Error occurs while remove monitor for egoing.net
代理列表默认每页显示10个节点,授权时页面刷新后总是返回到第1页。
节点多了表示很痛苦!
Previously we didn't upload the nGrinder 3.1 controller war file but the tomcat integrated zipped one.
If you like to upgrade the current controller war file into new 3.1 binary,
visit now http://sourceforge.net/projects/ngrinder/files/ngrinder-3.1/
Enjoy nGrinder.
One of my users was attempting to create a "Quick Start" test with the URL "http://test-system/flights/departures;gateRequested=false;departureDate=2013-11-14;" and the system creates a folder structure with the most nested folder called "departures;gateRequested=false;departureDate=2013-11-14;" (I can see this from within my desktop SVN client).
However because this contains semi-colons it cannot be navigated to from within nGrinder and, being longer than the maximum permitted, may cause issues later on.
The URL parser already stops parsing the final "folder" name if it encounters a "?" character - please can we have a change so that it stops on the first invalid character (or the 20th character if sooner)?
Many thanks,
Colin Main
Monitor initiate the JMX over RMI and bind it to all available IPs so that all monitor connection request can be accepted. To bind to all IP6 and IP4 , I used "[::]" for JMX-RMI Service URL.
However [::] is not working when the only IP4 is available in the system. Instead, It seems that It tries to bind to a IP which can be resolved by lookup "hostname"
In some linux system, 127.0.0.1 is returned when resolving hostname. Eventually JMX-RMI is accessible only when the client in the same server calls.
It's very serious problem. We should fix this by checking IP6 support in the system and use [::](for IP6 and IP4 both supproted system) or 0.0.0.0 (for IP4 only supported system) for JMX RMI server.
This issue might be happened on mac osx snow leopard regardless of web browsers.
When I test it on 10.7, 10.8, 10.9, it just reproduced on 10.7(maybe snow leopard).
Let's refer the following issue:
http://ngrinder.642.n7.nabble.com/Host-Add-td1409.html
ngrinder have provided following configuration in order to defend over traffic issue.
plugin.networkoverflow.limit
plugin.networkoverflow.pertest.limit
But, it should be affected only shared agents not the private agent, so, these configuration shouldn't be affected on private agents.
As time goes by, our code is evolving inconsistently. We use commit first approach so we didn't block commiter's commits which harms consistency. Even I made a lot of mistakes. For example... FileEntryController
contains following methods.
addFolder(User, String, String, String): void
createUserRepo(User, File): SVNURL
delete(User, String): void
delete(User, String, String[]): void
dividePathAndFile(String): String[]
getAllFileEntries(User): List<FileEntry>
getCurrentContextPathFromUserRequest(): String
getFileEntries(User, String, Long): List<FileEntry>
getFileEntry(User, String): FileEntry
getFileEntry(User, String, long): FileEntry
getFileEntry(User, String, Long): FileEntry
Some times we used (verb)FileEntry
or just verb
.
getFileEntry...
delete...
If we have to make them consistent, we should take out FileEntry
from all methods or put FileEntry
in all methods. What do you think which one is better?
At this moment it's very inconvenient to manually type http(s):// for each URL in order to test in nGrinder. It would be great if http(s):// was added automatically when user forgets to enter it manually. It's bad UX to make users type it manually.
In the monitor page, the chart interval is retrieved by chartInterval json variable. However the value passed from controller is named "interval". It makes the charInterval undefined and it make the graph always rendered with "1 sec interval".
nGrinder 3.0.0, 1, 2 controller has some serious bug related to the amount of test count.
http://jira.cubrid.org/browse/NGRINDER-367
We highly recommend nGrinder 3.0 users upgrade to nGrinder 3.0.3 controller which fixed this issue.
You can download nGrinder 3.0.3 controller in the following location.
https://github.com/nhnopensource/ngrinder/downloads
It's compatible with nGrinder 3.0 agents.
You can upgrade it by just replace existing controller war file.
when i initially setup ngrinder i was able to log into the application. When i setup 3.0.2 i was not able to login. Even when i shifted back to 3.0.1 i still am not able to login.
i have tried "user" "admin". After entering the username and password it returns back to the login page and not error message is shown on the screen
i have reinstall apachi and cleared the browser cache reinstalled .war file many times
I am using windows 7 system
But in the log file below message appears.
19:07:58 INFO ClassPathInit.java:51 : Total Class Path for validation is /D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/asm-3.3.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/dnsjava-2.1.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-core-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-dcr-agent-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-http-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-httpclient-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/grinder-xmlbeans-3.9.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/jsr173-1.0.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/jython-2.2.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/logback-classic-1.0.0.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/logback-core-1.0.0.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/ngrinder-dns-3.0.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/picocontainer-2.13.6.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/slf4j-api-1.6.4.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/stax-api-1.0.1.jar;/D:/apache-tomcat-7.0.32/webapps/ngrinder-controller/WEB-INF/lib/xmlbeans-2.5.0.jar
19:07:59 WARN Cglib2AopProxy.java:255 : Unable to proxy method [public final void org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.afterPropertiesSet() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
19:07:59 INFO PluginManager.java:115 : Initializing Plugin System
19:07:59 INFO PluginManager.java:231 : plugin descriptor org.ngrinder.infra.plugin.OnLoginModuleDescriptor with on-login is initiated.
19:07:59 INFO PluginManager.java:231 : plugin descriptor org.ngrinder.infra.plugin.OnServletFilterModuleDescriptor with on-servletfilter is initiated.
19:07:59 INFO PluginManager.java:231 : plugin descriptor org.ngrinder.infra.plugin.OnControllerLifeCycleModuleDescriptor with on-start is initiated.
19:07:59 INFO PluginManager.java:231 : plugin descriptor org.ngrinder.infra.plugin.OnTestLifeCycleModuleDescriptor with on-test-start is initiated.
19:08:00 INFO PluginManager.java:152 : Plugin System is started.
19:08:29 INFO HomeController.java:155 : Login Failure No athenticated
19:08:38 INFO HomeController.java:155 : Login Failure No athenticated
Some JVM (JVM on AIX) does not compatible with the DNSJava nGrinder agent built on. Whenever DNS is resolved, the worker process is not correctly performed.
This issue is reported by ypspace http://ngrinder.642.n7.nabble.com/ngrinder3-3-hosts-td1303.html
We need to provide the option which disables the local dns resolution.
@newpcraft @maoyubin @Mavlarn @Chojiwon
I think we're almost ready to release 3.3.1 which includes. #32 #33 #34, #36 and http://jira.cubrid.org/browse/NGRINDER-725 fixes?
What do you think you guys? If you agree with this, please add the +1 comment (It's the very conventional way to get agreed.
If we all agree on this, we should do following as you guys know.
Several users reported the followings when running ngrinder in windows.
D:\ngrinder-agent>run_agent.bat
Error: Could not find or load main class lib\asm-3.3.1.jar
It seems that it's caused by JDK bug. nGrinder agent batch file puts "lib/*" as the -cp. However from some version of JDK, Java is not successful to resolve the appropriate jar files contained in the lib folder.
For this case, we can make the classpath not to have wildcard and construct the whole classpath by iterating the jar files like the following.
@ECHO OFF
setLocal EnableDelayedExpansion
for /R ./lib %%a in (*.jar) do (
set CLASSPATH=!CLASSPATH!;%%a
)
set CLASSPATH=!CLASSPATH!
java -server -cp "%CLASSPATH%" org.ngrinder.NGrinderAgentStarter --mode agent --command run %*
nGrinder provide switching other user for sharing their scripts or tests using switch other user function.
By the way, the input name should be more than 3 characters, so some user can't be changed who has two byte names such as some multi-bytes characters users.
So, it would better to reduce as 2 characters.
Title says it all.
It consumes 100% of one core. I tested in locally and at a remote server as well. Is this a feature or a bug?
controller.safe_dist_threshold takes the int value so if the option value is more than integer range, this option is resolved as the 0 and all file transmission is done under safe file transmission logic.
So.. we need to get this in long type.
nGrinder team proudly releases nGrinder 3.1.1 which is the minor update.
This version focused to improve the UX. It's fast and more visible than 3.1 and fix/improve 21 issues.
http://www.cubrid.org/wiki_ngrinder/entry/ngrinder-3-1-1-release-note
We highly recommend nGrinder 3.1 users upgrade to nGrinder 3.1.1 controller and agents.
You can download nGrinder 3.1.1 binary in the following location.
http://sourceforge.net/projects/ngrinder/files/ngrinder-3.1.1/
Please check the release note before you replace the existing version. It's a little bit tricky to upgrade well.
Enjoy the easy and happy performance testing.
We have started to make proper use of the Account Share feature (http://www.cubrid.org/wiki_ngrinder/entry/user-account-share) to allow users to work on a "project" user, so all members of the project team share resources. However we appear to have an issue with SVN access to the "project" user. The scenario is as follows:
Project P1, user U1, admin user A1
P1 has shared their account with U1
(If U1 is made an administrator, they can upload to U1, A1 and P1 but we do not want to use this as a work-around for obvious reasons.)
Given that the account-share feature is intended to be our standard way of working this is a little awkward.
Please can you help - am I doing something wrong?
Actually, ngrinder agent try to handle a timeout while running in @BeforeProcess routine. Test would be failed if the first test method didn't be started within 30 seconds.
However, because some ngrinder test might consume long time to prepare testing data on @BeforeProcess routine, we need to implement to adjust this timeout period in a configuration file of ngrinder controller.
While running a test, the agent shows the following exception if it has a null character even the script has no error.
When it is saved by the editor of ngrinder controller, there are no issue because the null character has already trimmed by the editor. However, while saving a script content by rest api, null characters are not handled.
So, it maybe need to trim a null character in the script content due to improve reliability.
ERROR worker-bootstrap: Error running worker process
net.grinder.engine.common.EngineException: Error while initialize test runner
at net.grinder.scriptengine.groovy.GroovyScriptEngine.<init>(GroovyScriptEngine.java:71) ~[ngrinder-groovy-3.3.1-SNAPSHOT.jar:na]
at net.grinder.scriptengine.groovy.GroovyScriptEngineService.createScriptEngine(GroovyScriptEngineService.java:109) ~[ngrinder-groovy-3.3.1-SNAPSHOT.jar:na]
at net.grinder.engine.process.ScriptEngineContainer.getScriptEngine(ScriptEngineContainer.java:105) ~[grinder-core-3.9.1.jar:na]
at net.grinder.engine.process.GrinderProcess.run(GrinderProcess.java:329) ~[ngrinder-runtime-3.3.1-SNAPSHOT.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.run(WorkerProcessEntryPoint.java:87) [grinder-core-3.9.1.jar:na]
at net.grinder.engine.process.WorkerProcessEntryPoint.main(WorkerProcessEntryPoint.java:60) [grinder-core-3.9.1.jar:na]
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/Users/NAVER/.ngrinder_agent/file-store/admin/current/TestRunner.groovy: 26: unexpected char: 0x0 @ line 26, column 1.
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:149) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:119) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:131) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:359) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:137) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:162) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:912) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:574) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:550) ~[groovy-all-2.2.1.jar:2.2.1]
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:527) ~[groovy-all-2.2.1.jar:2.2.1]
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279) ~[groovy-all-2.2.1.jar:2.2.1]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258) ~[groovy-all-2.2.1.jar:2.2.1]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:244) ~[groovy-all-2.2.1.jar:2.2.1]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:185) ~[groovy-all-2.2.1.jar:2.2.1]
at net.grinder.scriptengine.groovy.GroovyScriptEngine.<init>(GroovyScriptEngine.java:62) ~[ngrinder-groovy-3.3.1-SNAPSHOT.jar:na]
... 5 common frames omitted
According the following issue, it possible to added hosts more than before.
But, sometimes, 1024 bytes also might not be sufficient to store hosts if the host name is quite long.
So, it would be better to expand to 65535.
Because of varchar field, even it expand to 65535, it wouldn't affect any performance issue both of cubrid and h2 database.
test issue for rss
Caused by: org.h2.jdbc.JdbcSQLException: Value too long for column "AGENT_STAT VARCHAR(2000)": "'{""agent32.higkoo.org"":{""port"":0,""system"":""LINUX"",""collectTime"":1362982622754,""freeMemory"":1587248,""totalMemory"":3924216,""cpuUse... (3234)"; SQL statement:
update PERF_TEST set last_modified_date=?, last_modified_user=?, agent_count=?, agent_stat=?, description=?, distribution_path=?, duration=?, errors=?, finish_time=?, ignore_sample_count=?, init_processes=?, init_sleep_time=?, last_progress_message=?, mean_test_time=?, monitor_stat=?, peak_tps=?, port=?, process_increment=?, process_increment_interval=?, processes=?, progress_message=?, region=?, run_count=?, running_sample=?, safe_distribution=?, scheduled_time=?, script_name=?, script_revision=?, send_mail=?, start_time=?, status=?, stop_request=?, tag_string=?, target_hosts=?, test_comment=?, test_error_cause=?, name=?, test_time_standard_deviation=?, tests=?, threads=?, threshold=?, tps=?, use_rampup=?, vuser_per_agent=? where id=? [22001-168]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:315)
at org.h2.table.Table.validateConvertUpdateSequence(Table.java:689)
at org.h2.command.dml.Update.update(Update.java:123)
at org.h2.command.CommandContainer.update(CommandContainer.java:75)
at org.h2.command.Command.executeUpdate(Command.java:230)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:156)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:142)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 40 more
All versions of nGrinder clears file distribution caches before distributing the files.
Normally it's not a problem. Usually users locate the controller and agents in the near place and file transmission b/w the controller and agents is fast enough, so even bunch of files(maybe < 20mb) can be transmitted in a very short time. However if the file size is big and the network bandwidth is limited, ngrinder automatically turns on the safe distribution feature and slow down the whole transmission process.
Currently ngrinder collects the target system status which are emitted from ngrinder monitor.
However most people don't use it. The one of the reasons might be because the monitor emits only memory/cpu/network. They can be not very useful much for java web service developers. For example the memory is bound to the XMX setting so it never goes beyond this setting. What java web service developers needs is not free memory but heap/permgen memroy size.
We have already plugin extension point which allows ngrinder to perform some job whenever the sampling is executed. What If we provides the plugin which connects the JMX in tomcat and collects Heap/PermGen/GC count/Threads from target JVM?
Hi
I am using nGrinder 3.0.1 (windows 7 environment). The controller and Agent are able to communicate, they are configured in the same box. I created a simple script for http://www.google.com.
When ran the test i got the following error "Stoped by error". I am not able to find a log where i can see the error. i am not able to find anything under Report tab.
I also noticed this under Tomcat command window.
INFO: Invalid chunk starting at byte [335] and ending at byte [336] with a value of [=] ignored Note: further occurrences of parameter error will be logged at DEBUG level.
nGrinder agent is easy to install.
'''Just download the binary, modify the agent.conf to connect to appropriate controller then run.'''
However there are several problems about this.
What I firstly thought was JNLP. Actually this idea came from Jenkins. Jenkins allows to run a slave in the each machine by downloading jnlp from Jenkins master. This dramatically simplifies the slave installation. However I've found this is not much feasible way in ngrinder agent. Because agents can be executed by jnlp. But they can not execute worker processes. When a agent invokes worker processes, it takes the classpaths from the current class loader and filter them to minimize the dependencies. Worker processes will load several user defined library. so we should minimize dependencies which worker processes itself needs to minimize the dependency conflicts.
However jar files downloaded from JNLP are stored in the local java cache and renamed to weird name like 0Xw320ajsd. It has no jar file extension. Therefore, It's not readable and filterable. I failed to infer the original jar files name from this mangled jar file name.
In addition, JNLP needs signed jar files. To sign jar files, we need a certificate. This can be a reason for developers not to participate ngrinder dev.
So.. I concluded that we should drop JNLP approach. We need something different.
Following is one of the candidates I think.
Make the agent package(tar.gz) downloadable from controller not sourceforge.
url should be http://controller-host/download/agent
The agent package contains predefined agent.conf file to connect current controller
ngrinder controller might need the dynamic tar.gz composition.
we may use some cache not to repackage tar.gz when there are no changes.
Unzip the binary and just run run_agent.sh
ngrinder agent detects the pre-defined agent.conf in the current folder and copy it to ${NGRINDER_AGENT_HOME}/agent.conf if the pre-packaged agent.conf is newer than ${NGRINDER_AGENT_HOME}/agent.conf.
Make the ngrinder update command in agent controller work again so that controller can order all the connected agent download agent package into ${NGRINDER_AGENT_INSTALLATION_FOLDER}/update_package folder.
if there exists update folder, copy this to the root installation folder and execute run_agent_internal.sh.
This was already implemented here
What do you think about this idea?
目前agent只读用户家目录下的配置文件,这种做法很不科学!
比如,想用nobody运行agent都不可以。
此应用应该是和用户无关的,理论应该在/etc下独立一个目录放配置。当然,也可以支持在/etc下没有时用家目录。
nGrinder 3.3 only works with JDK not JRE under the security mode. It's because SecurityManager tries to resolve the JAVA_HOME and JAVA_HOME can be only available with JDK. In the NGrinderSecurityManager JAVA_HOME is used to resolve the jre location. However jre location can be resolved with System.getProperty("java.home"), then we might not need to resolve JAVA_HOME explicitly.
nGrinder 3.0 controller has some serious bug related to classpath when you use jar file.
We highly recommend nGrinder 3.0 users upgrade to nGrinder 3.0.1 controller which fixed this issue.
You can download nGrinder 3.0.1 controller in the following location.
It's compatible with nGrinder 3.0 agents.
nGrinder team proudly releases nGrinder 3.1 which is the major update.
If your organization is big enough, you may be satisfied with nGrinder 3.1 features. This version is majorly targeting the company which uses multiple IDCs.
http://www.cubrid.org/wiki_ngrinder/entry/ngrinder-3-1-release-note
Even if your organization is small, nGrinder 3.1 might be beneficial either.
It has more stable agents and shareable user account.
We highly recommend nGrinder 3.0 users upgrade to nGrinder 3.1 controller and agents.
You can download nGrinder 3.1 binary in the following location.
http://sourceforge.net/projects/ngrinder/files/ngrinder-3.1/
You can upgrade it by just replace existing files.
Enjoy easy and happy performance testing.
Mistakenly, nGrinder 3.3 controller's default log level set as DEBUG.
In the controller-properties.map includes the following line.
controller.verbose,true,verbose
It should be false, if we want to minimize the log size. Fix this.
Hello,
When I try to add multiple agent, ngrinder displays same multiple instances.
https://www.dropbox.com/s/cg5pio6p47a6rad/capture.PNG
in this picture, I try to add two agent from 10.89.5.68 and 10.89.3.55, but ngrinder shows two same 127.0.0.1 instances.
Test Environment:
I think if you use the agent's IP address as the key of the agent, you need to change the getHostAddress() routine in ./main/java/net/grinder/AgentController.java
Thanks.
I checked out github project today and built the .war files with maven. I can use the web interface, distribute tests and run them. Everything appears to working perfectly. When I go to the detail report page, none of the graphs display anything, but I can download the CSV file and it contains what I expect. When inspecting the page, the following error shows up in the console:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
When running nGrinder test in the intellij, the dependency to the ngrinder-groovy should be compile scope. It's because intellij excludes the dependencies in the classpath when running JUnit test by default. However puttting ngrinder-groovy dependency to the compile scope, test under ngrinder context might be failed. There we need to put the maven profile to activate the dependency only in the intelliJ context . I've already provided the description in the following url,
http://www.cubrid.org/wiki_ngrinder/entry/import-groovy-maven-project-in-intellij
However it might be better to provide these profiles in the default maven template by default.
<profiles>
<!-- Following dependency is mandatory -->
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.ngrinder</groupId>
<artifactId>ngrinder-groovy</artifactId>
<version>${ngrinder.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</profile>
<!-- Use intellij profile when running tests in the intellij -->
<profile>
<id>intellij</id>
<dependencies>
<dependency>
<groupId>org.ngrinder</groupId>
<artifactId>ngrinder-groovy</artifactId>
<version>${ngrinder.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
SYS ENV is CentOS 5, JKD_1.6.0_38, Tomcat 6
hostname -> intra21
ping hostname
-> 10.207.0.200
/etc/hosts
10.207.0.200 localhost
10.207.0.200 intra21
run_agent.sh
2013-02-03 17:55:57,191 INFO org.ngrinder.infra.AgentConfig: Java Sytem Property: ngrinder.agent.home=
2013-02-03 17:55:57,192 WARN org.ngrinder.infra.AgentConfig: The path to ngrinder agent home is ambiguous:
2013-02-03 17:55:57,192 WARN org.ngrinder.infra.AgentConfig: 'null' is accepted.
2013-02-03 17:55:57,216 TRACE org.ngrinder.common.util.PropertiesWrapper: The verbose is not defined in conf file. Use false instead.
2013-02-03 17:55:57,324 INFO org.ngrinder.NGrinderStarter: java.library.path : /usr/java/jdk1.6.0_38/jre/lib/amd64/server:/usr/java/jdk1.6.0_38/jre/lib/amd64:/usr/java/jdk1.6.0_38/jre/../lib/amd64:./native_lib/::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib:/root/ngrinder-core/./native_lib
2013-02-03 17:55:57,325 INFO org.ngrinder.NGrinderStarter: - Passing mode agent
2013-02-03 17:55:57,326 INFO org.ngrinder.NGrinderStarter: - nGrinder version 3.1.1
2013-02-03 17:55:57,353 INFO org.ngrinder.NGrinderStarter: *************************
2013-02-03 17:55:57,354 INFO org.ngrinder.NGrinderStarter: Start nGrinder Agent ...
2013-02-03 17:55:57,359 INFO org.ngrinder.NGrinderStarter: with console: 127.0.0.1:16001
2013-02-03 17:55:57,400 INFO agent controller daemon: agent controller daemon : started.
2013-02-03 17:55:57,447 ERROR agent controller: Error while connecting to /127.0.0.1:16001 : Failed to connect to '/127.0.0.1:16001'
2013-02-03 17:55:59,455 ERROR agent controller: Error while connecting to /127.0.0.1:16001 : Failed to connect to '/127.0.0.1:16001'
how to run agent ???
nGrinder 3.3 allows 256 characters in the target host field. However it should be longer if the multiple host entries are used especially when L4 simulation mimics back end servers more than 10 back end.
For example, www.aaa.com:255.255.255.255; consists of 28 characters, hosts fields can only contain 8 hosts under the 256 characters.
ERROR ContextLoader.java:307 : Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [applicationContext-springdata.xml]
Offending resource: class path resource [applicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to read candidate component class: file [/home/user/.ngrinder/webapp/WEB-INF/classes/org/ngrinder/home/controller/HomeController$1.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320
Offending resource: class path resource [applicationContext-springdata.xml]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:271) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:196) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) ~[spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) ~[spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) ~[spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) ~[spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) ~[spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) [spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) [ngrinder-controller-3.3.war:na]
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) [ngrinder-controller-3.3.war:na]
at org.mortbay.jetty.Server.doStart(Server.java:224) [ngrinder-controller-3.3.war:na]
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) [ngrinder-controller-3.3.war:na]
at org.ngrinder.NGrinderControllerStarter.run(NGrinderControllerStarter.java:235) [ngrinder-controller-3.3.war:na]
at org.ngrinder.NGrinderControllerStarter.main(NGrinderControllerStarter.java:307) [ngrinder-controller-3.3.war:na]
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to read candidate component class: file [/home/user/.ngrinder/webapp/WEB-INF/classes/org/ngrinder/home/controller/HomeController$1.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320
Offending resource: class path resource [applicationContext-springdata.xml]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.handleError(AbstractRepositoryConfigDefinitionParser.java:182) ~[spring-data-commons-core-1.1.0.RELEASE.jar:na]
at org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.parse(AbstractRepositoryConfigDefinitionParser.java:94) ~[spring-data-commons-core-1.1.0.RELEASE.jar:na]
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1419) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1409) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:255) ~[spring-beans-3.1.0.RELEASE.jar:3.1.0.RELEASE]
... 30 common frames omitted
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1320
at org.springframework.asm.ClassReader.readClass(Unknown Source) ~[spring-asm-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.asm.ClassReader.accept(Unknown Source) ~[spring-asm-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.asm.ClassReader.accept(Unknown Source) ~[spring-asm-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReader.(SimpleMetadataReader.java:54) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:105) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:95) ~[spring-core-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent(ClassPathScanningCandidateComponentProvider.java:303) ~[spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:237) ~[spring-context-3.1.0.RELEASE.jar:3.1.0.RELEASE]
at org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.getRepositoryInterfacesForAutoConfig(AbstractRepositoryConfigDefinitionParser.java:140) ~[spring-data-commons-core-1.1.0.RELEASE.jar:na]
at org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.doAutoConfiguration(AbstractRepositoryConfigDefinitionParser.java:116) ~[spring-data-commons-core-1.1.0.RELEASE.jar:na]
at org.springframework.data.repository.config.AbstractRepositoryConfigDefinitionParser.parse(AbstractRepositoryConfigDefinitionParser.java:87) ~[spring-data-commons-core-1.1.0.RELEASE.jar:na]
... 41 common frames omitted
2014-12-23 16:11:22.468:WARN::Failed startup of context org.mortbay.jetty.webapp.WebAppContext@76c3e77a{/,file:/home/user/ngrinder/ngrinder-controller/target/ngrinder-controller-3.3.war}
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [applicationContext-springdata.xml]|Offending resource: class path resource [applicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to read candidate component class: file [/home/user/.ngrinder/webapp/WEB-INF/classes/org/ngrinder/home/controller/HomeController$1.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320|Offending resource: class path resource [applicationContext-springdata.xml]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1320
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:271)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:196)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.ngrinder.NGrinderControllerStarter.run(NGrinderControllerStarter.java:235)
at org.ngrinder.NGrinderControllerStarter.main(NGrinderControllerStarter.java:307)
不确定是是不是我使用的问题。
之前在用ngrinder-core-3.1.2的时候,语言设置是有效的。现在用ngrinder-core-3.1.3,配置:
ngrinder.langauge.default=cn
重启服务后,每次登录还是默认为英文。请查实
I cannot access the url specified at the top
http://nhnopensource.github.com/ngrinder
Whenever the mbeanclient is used, nGrinder makes timeout exception when it takes more than 1 sec. Usually it works when the ngrinder controller and target is close, However it might not workable in the distant environment.
private JMXConnector connectWithTimeout(final JMXServiceURL jmxUrl, int timeout) throws NGrinderRuntimeException, TimeoutException {
try {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<JMXConnector> future = executor.submit(new Callable<JMXConnector>() {
public JMXConnector call() throws IOException {
return JMXConnectorFactory.connect(jmxUrl);
}
});
return future.get(timeout, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
throw e;
} catch (Exception e) {
throw processException(e);
}
}
We need to make it configurable, so that the Mbeanclient client uses its own connection timeout value.
@junoyoon
I am trying to use Groovy maven project to write script, maybe there is a problem with pom.
I used the eclipse plugin for groovy, the plugin version is 2.9. The groovy latest compiler it provides is 2.1, but the dependency of ngrinder-groovy 3.3 is groovy-all 2.2.
Then when I run the groovy as a unit test, there is an error as below. Then I exclude the groovy-all dependency from ngrinder-groovy, and used the eclipse provided groovy compiler. Then it can run.
So, is it necessary to mention about this conflicts in pom template? Or, am I making some mistake to run.
java.lang.ExceptionInInitializerError
at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:162)
at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:192)
at org.codehaus.groovy.runtime.callsite.ClassMetaClassGetPropertySite.(ClassMetaClassGetPropertySite.java:35)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.createClassMetaClassGetPropertySite(AbstractCallSite.java:296)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.createGetPropertySite(AbstractCallSite.java:248)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.acceptGetProperty(AbstractCallSite.java:235)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
at TestDBCache.beforeProcess(TestDBCache.groovy:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at net.grinder.scriptengine.groovy.junit.RunAfterThreads.evaluate(RunAfterThreads.java:56)
at net.grinder.scriptengine.groovy.junit.GrinderRunner.run(GrinderRunner.java:170)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.1.6 and you are trying to load version 2.2.1
at TestDBCache.beforeProcess(TestDBCache.groovy:31)
... 8 more
I want to run agent on a windows machine and when i tried to download ngrinder-core-3.0-agent-package.zip it gave file not found error.
When the user downloads the agent, the agent package (when it's firstly downloaded) contains the __agent.conf having same lastmodifiedtime as downloading time.
If the agent machine has the time settings slower than controller, the newly copied ${NGRINDER_AGENT_HOME}/agent.conf might have the older lastmodifiedtime timestamp. In this case, the any modification on ${NGRINDER_AGENT_HOME}/agent.conf might overwritten by __agent.conf.
To fix this, we need to set agent.conf's timestamp as the __agent.conf when it's copied.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.