protected static Optional<Properties> getSnapshotProperties(final LoadRunnerVUVisitor visitor, final MethodCall method) { final String snapshotFileName = getParameterValueWithName(visitor.getLeftBrace(), visitor.getRightBrace(), method, "Snapshot").orElse(""); if (isNullOrEmpty(snapshotFileName)) { return Optional.empty(); } try{ final Properties properties = new Properties(); properties.load(newInputStream(visitor.getReader().getCurrentScriptDataFolder().resolve(snapshotFileName))); return Optional.of(properties); } catch (final IOException e) { LOGGER.warn("Cannot find snapshot properties files: ", e); } return Optional.empty(); }
protected static Optional<RecordedFiles> getRecordedFilesFromSnapshotProperties(final LoadRunnerVUVisitor visitor, final Optional<Properties> snapshotProperties) { if(!snapshotProperties.isPresent()){ return Optional.empty(); } final Path projectDataPath = visitor.getReader().getCurrentScriptDataFolder(); final Optional<String> requestHeaderFile = getRecordedFileName(snapshotProperties.get(), "RequestHeaderFile", projectDataPath); final Optional<String> requestBodyFile = getRecordedFileName(snapshotProperties.get(), "RequestBodyFile", projectDataPath); final Optional<String> responseHeaderFile = getRecordedFileName(snapshotProperties.get(),"ResponseHeaderFile", projectDataPath); final Optional<String> responseBodyFile = getRecordedFileName(snapshotProperties.get(),"FileName1", projectDataPath); return Optional.of(ImmutableRecordedFiles.builder() .recordedRequestHeaderFile(requestHeaderFile) .recordedRequestBodyFile(requestBodyFile) .recordedResponseHeaderFile(responseHeaderFile) .recordedResponseBodyFile(responseBodyFile) .build()); }
/** * Generate an immutable request from a given URL object */ @VisibleForTesting protected static GetPlainRequest buildGetRequestFromURL(final LoadRunnerVUVisitor visitor, final URL url, final Optional<RecordedFiles> recordedFiles, final List<Header> recordedHeaders) { final ImmutableGetPlainRequest.Builder requestBuilder = ImmutableGetPlainRequest.builder() // Just create a unique name, no matter the request name, should just be unique under a page .name(UUID.randomUUID().toString()) .path(url.getPath()) .server(visitor.getReader().getServer(url)) .httpMethod(Request.HttpMethod.GET) .recordedFiles(recordedFiles); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(recordedHeaders); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); MethodUtils.queryToParameterList(url.getQuery()).forEach(requestBuilder::addParameters); return requestBuilder.build(); }
return Collections.emptyList(); final Server server = visitor.getReader().getServer(url);
/** * * @param method represent the LR "web_submit_data" function * @return the associate POST_REQUEST */ public static PostRequest buildPostFormRequest(final LoadRunnerVUVisitor visitor, final MethodCall method) { final URL mainUrl = Preconditions.checkNotNull(getUrl(visitor.getLeftBrace(), visitor.getRightBrace(), method)); final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutablePostFormRequest.Builder requestBuilder = ImmutablePostFormRequest.builder() .name(mainUrl.getPath()) .path(mainUrl.getPath()) .server(visitor.getReader().getServer(mainUrl)) .httpMethod(getMethod(visitor.getLeftBrace(), visitor.getRightBrace(), method)) .recordedFiles(recordedFiles); getContentType(snapshotProperties).ifPresent(requestBuilder::contentType); requestBuilder.addAllExtractors(visitor.getCurrentExtractors()); requestBuilder.addAllValidators(visitor.getCurrentValidators()); requestBuilder.addAllHeaders(visitor.getCurrentHeaders()); visitor.getCurrentHeaders().clear(); requestBuilder.addAllHeaders(visitor.getGlobalHeaders()); requestBuilder.addAllHeaders(recordedHeaders); MethodUtils.extractItemListAsStringList(visitor, method.getParameters(), ITEMDATA, Optional.empty()) .ifPresent(stringList -> buildPostParamsFromExtract(stringList).forEach(requestBuilder::addPostParameters)); MethodUtils.queryToParameterList(mainUrl.getQuery()).forEach(requestBuilder::addParameters); return requestBuilder.build(); }
.name(mainUrl.getPath()) .path(mainUrl.getPath()) .server(visitor.getReader().getServer(mainUrl)) .httpMethod(getMethod(visitor.getLeftBrace(), visitor.getRightBrace(), method)) .contentType(MethodUtils.getParameterValueWithName(visitor.getLeftBrace(), visitor.getRightBrace(), method, "EncType")) .name(mainUrl.getPath()) .path(mainUrl.getPath()) .server(visitor.getReader().getServer(mainUrl)) .httpMethod(getMethod(visitor.getLeftBrace(), visitor.getRightBrace(), method)) .contentType(MethodUtils.getParameterValueWithName(visitor.getLeftBrace(), visitor.getRightBrace(), method, "EncType"))