Hello, Beside Milamber great notes: - add much more comments and javadocs particularly on DNSCacheManager - mention in component_reference.xml the use cases for the different possible configurations combinations of DNSCacheManager - Add Apache header to each file - Remove author mention(that's the tradition) - add @since 2.12 to classes
Thanks for contribution Regards On Sunday, August 10, 2014, Milamber <[email protected]> wrote: > Hello, > > I think we can include the new behavior directly in JMeter (and > dns-utils uses the BSD license which is compliant with AL) > > Your patch is incomplete, when I try to build a distribution, there are > these errors (ant task test): > > [java] There were 6 failures: > [java] 1) > > testMaven(org.apache.jmeter.JMeterVersionTest)junit.framework.AssertionFailedError: > Should have no names left: [dnsjava]. Check ApacheJMeter_parent.pom > [java] at > org.apache.jmeter.JMeterVersionTest.testMaven(JMeterVersionTest.java:184) > [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > [java] at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > > > ==> Add dnsjava in Jmeter pom (ApacheJMeter_parent.pom) > > [java] 2) > > testEclipse(org.apache.jmeter.JMeterVersionTest)junit.framework.AssertionFailedError: > Should have no names left: [dnsjava]. Check eclipse.classpath > [java] at > org.apache.jmeter.JMeterVersionTest.testEclipse(JMeterVersionTest.java:155) > [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > [java] at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > > > ==> Add dnsjava in libs section in eclipse.classpath file > > [java] 3) > > GUIComponents1(org.apache.jmeter.junit.JMeterTest)junit.framework.AssertionFailedError: > 'dns_cache_manager_title' should be in resource file for > org.apache.jmeter.protocol.http.gui.DNSCachePanel > [java] at > org.apache.jmeter.junit.JMeterTest.GUIComponents1(JMeterTest.java:428) > [java] at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown > Source) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > [java] 4) > > runGUITitle(org.apache.jmeter.junit.JMeterTest)junit.framework.AssertionFailedError: > component_reference.xml needs > > ==> Add the entry in > - messages.properties > dns_cache_manager_title=DNS Cache Manager > > - messages_fr.properties > dns_cache_manager_title=Gestionnaire de cache DNS > > > > '[res_key=dns_cache_manager_title]' anchor for > org.apache.jmeter.protocol.http.gui.DNSCachePanel > [java] at > org.apache.jmeter.junit.JMeterTest.runGUITitle(JMeterTest.java:368) > [java] at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown > Source) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > > [java] 5) > > runSerialTest(org.apache.jmeter.junit.JMeterTest)junit.framework.AssertionFailedError: > serialization of org.apache.jmeter.protocol.http.control.DNSCacheManager > failed: java.io.NotSerializableException: org.xbill.DNS.Cache > [java] at > org.apache.jmeter.junit.JMeterTest.runSerialTest(JMeterTest.java:506) > [java] at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown > Source) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > > > > > [java] 6) > > runTestElement(org.apache.jmeter.junit.JMeterTest)junit.framework.AssertionFailedError: > SaveService nameMap (saveservice.properties) should contain > org.apache.jmeter.protocol.http.control.DNSCacheManager > [java] at > org.apache.jmeter.junit.JMeterTest.checkElementAlias(JMeterTest.java:553) > [java] at > org.apache.jmeter.junit.JMeterTest.runTestElement(JMeterTest.java:540) > [java] at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown > Source) > [java] at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > [java] at org.apache.jorphan.test.AllTests.main(AllTests.java:236) > [java] > > > ==> Add in ./bin/saveservice.properties the > org.apache.jmeter.protocol.http.control.DNSCacheManager entry > > > [java] FAILURES!!! > [java] Tests run: 2530, Failures: 6, Errors: 0 > > > In addition, > > - don't use wildcard in import directive > import org.xbill.DNS.*; > > > - in DNSCachePanel.java, some strings must be internationalize (I18N) > (messages.properties) > + private static final String ADD_COMMAND = "Add"; // $NON-NLS-1$ > + private static final String DELETE_COMMAND = "Delete"; // $NON-NLS-1$ > + private static final String SYS_RES_COMMAND = "Use system DNS > resolver"; // $NON-NLS-1$ > + private static final String CUST_RES_COMMAND = "Use custom DNS > resolver"; // $NON-NLS-1$ > .... > + private static final String[] COLUMN_RESOURCE_NAMES = { > + ("NAME/IP"), //$NON-NLS-1$ > ... > + private String DNS_SERVERS_TABLE_NAME="DNS Servers"; > ... > + sysResButton.setToolTipText("Use system DNS resolver"); > ... > custResButton.setToolTipText("Use custom DNS resolver"); > etc. > > Note : Add / Delete strings are already in messages.properties > > > - the DNS cache panel must offer in default option : Use system DNS > resolver (not the custom) > > - Add the default value in setProperty, to allow the save service don't > save the default value in JMX file (only the custom values) > > Like this : > public static final String SERIES_SELECTION_REGEXP = > "RespTimeGraph.seriesselectionregexp"; // $NON-NLS-1$ > [...] > public static final boolean DEFAULT_REGEXP = true; > [...] > in configure() > regexpChkBox.setSelected(te.getPropertyAsBoolean(SERIES_SELECTION_REGEXP, > DEFAULT_REGEXP)); > [...] > in modifyTestElement( > te.setProperty(SERIES_SELECTION_REGEXP, regexpChkBox.isSelected(), > DEFAULT_REGEXP); > > - avoid to change code formatting in the same patch with a new behavior > (for a better history of changes) > > Like this: > - private SystemDefaultDnsResolver systemDefaultDnsResolver=null; > - private Map<String,InetAddress[]> cache = null; > + private SystemDefaultDnsResolver systemDefaultDnsResolver = null; > + private Map<String, InetAddress[]> cache = null; > + private Resolver resolver = null; > //++ JMX tag values > > The better way is to provide a patch with the new behavior and without > code formatting on the existing code, and signal to the dev team that > the code needs a code formatting. > > - seems have a bug, when I try to load a JMX file with a DNS cache > manager with the saving configuration : Use system DNS resolver: The > option is transform to "Use custom DNS resolver" and the DNS Servers > table is disabled. > > - Add some docs in component_reference.xml > > > Please provide a patch in diff format (tools like Eclipse make this task > easy) and upload the patch in the Bugzilla (perhaps a new issue, Bug > 43730 seems not directly related) > > Milamber > > > > > Le 10/08/2014 15:12, Dzmitry_Kashlach a ecrit : > > Hi JMeter Team, > > > > JMeter has a problem with testing services that have DNS round-robin > > balancing, CDNs in particular. The paradigm "1 thread" ="1 virtual user" > is > > used in majority of tests and it would be logical, if every virtual user > > resolved address on its own. JVM DNS cache prevents from it. > > I've done some research in JMeter mailing lists and found several > > user-requests with the same problem: DNS-Cache-when-using-Amazon-ELB > > < > http://jmeter.512774.n5.nabble.com/DNS-Cache-when-using-Amazon-ELB-td5715972.html > > > > , DNS-round-robin-and-JVM-DNS-lookup-caching > > < > http://jmeter.512774.n5.nabble.com/DNS-round-robin-and-JVM-DNS-lookup-caching-td524221.html > > > > Completely turning off JVM DNS cache doesn't solve the problem > ideally > > because in this case DNS request are sent too often. > > I've developed DNS Cache Manager for obtaining desired behavior "1 > > virtual user - 1 DNS cache". But this plugin requires changes in > > HTTPSamplerBase code to pass to HTTP Client alternative DNS resolver. For > > now, HTTPSamplerBase does not apply third-party config elements because > of > > hardcoded list of class names. > > Plugin was successfully tested huge CDN provider and I would like to > share > > it with community, because it could be usefull in performance testing. > > I see two possible ways to contribute it: > > 1. I can prepare a patch with minimal changes, which make HTTP Sampler > able > > to apply third-party config elements and allow to change default DNS > > resolver to alternate. This allows not to include required dnsjava > library > > into JMeter and not commit full code of DNS Cache Manager into > repository. > > 2. We can simply commit all changes in JMeter, add dnsjava as dependency, > > and get flexible DNS Cache Manager out-of-box. You can see implementation > > via the following links: > > DNSCacheManager > > < > https://github.com/Blazemeter/jmeter/blob/2d3ccd00f4b824e43cb8c1ea2cb5f19cd7cf56b0/src/protocol/http/org/apache/jmeter/protocol/http/control/DNSCacheManager.java > > > > DNSCachePanel > > < > https://github.com/Blazemeter/jmeter/blob/2d3ccd00f4b824e43cb8c1ea2cb5f19cd7cf56b0/src/protocol/http/org/apache/jmeter/protocol/http/gui/DNSCachePanel.java > > > > HTTPHC4Impl > > < > https://github.com/Blazemeter/jmeter/blob/2d3ccd00f4b824e43cb8c1ea2cb5f19cd7cf56b0/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java > > > > HTTPSamplerBase > > < > https://github.com/Blazemeter/jmeter/blob/2d3ccd00f4b824e43cb8c1ea2cb5f19cd7cf56b0/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java > > > > BTW, there is already an issue in bugzilla > > <https://issues.apache.org/bugzilla/show_bug.cgi?id=43730> , related to > > this problem. > > I'd like to hear comments from contributors about my suggestion, please > > guide me. > > > > Thanks, > > Dzimitry > > > > > > > > > > -- > > View this message in context: > http://jmeter.512774.n5.nabble.com/DNS-Cache-Manager-improvement-for-testing-CDN-tp5720797.html > > Sent from the JMeter - Dev mailing list archive at Nabble.com. > > > > -- Cordialement. Philippe Mouawad.
