package testCases.stepic; import base.CaseConfig; import base.TestCase; import base.TestException; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import testCases.http.HttpAnswer; import testCases.http.HttpHelper; import testCases.jmx.Client; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author v.chibrikov */ public class HW06 implements TestCase { private static final String RESOURCE_NAME = "resource.xml"; private static final String UTF_8 = "utf-8"; public boolean test(CaseConfig cfg) { try { long currentTime = (new Date()).getTime(); String name = "Test" + currentTime; int age = (int) (currentTime / Integer.MAX_VALUE); String resourceString = createResourceString(name, age); Path resource = Files.write(Paths.get(RESOURCE_NAME), resourceString.getBytes(UTF_8), StandardOpenOption.CREATE); resource.toFile().deleteOnExit(); if (!resource.toFile().exists()) { throw new TestException("Can't create resource file: " + resource.toFile().getAbsolutePath()); } List<NameValuePair> urlParameters = new ArrayList<>(); urlParameters.add(new BasicNameValuePair("path", "resource.xml")); String signUpURL = "http://" + cfg.getHost() + ":" + cfg.getPort() + "/resources"; HttpAnswer signUpAnswer = HttpHelper.sendPost(signUpURL, urlParameters); int signUpCode = signUpAnswer.getCode(); if (signUpCode != 200) { System.out.println("Can't load resource. Response code: " + signUpCode); return false; } Client jmxClient = new Client("service:jmx:rmi:///jndi/rmi://:9010/jmxrmi"); String objectName = "Admin:type=ResourceServerController"; String attributeNameName = "Name"; Object nameFromResource = jmxClient.getAttribute(objectName, attributeNameName); String attributeAgeName = "Age"; Object ageFromResource = jmxClient.getAttribute(objectName, attributeAgeName); return name.equals(nameFromResource) && ageFromResource.equals(age); } catch (IOException e) { throw new TestException(e); } } private String createResourceString(String name, int age) { return "<class name=\"resources.TestResource\">" + System.lineSeparator() + "<name>" + name + "</name>" + System.lineSeparator() + "<age>" + age + "</age>" + System.lineSeparator() + "</class>"; } }