@Override public List<Element> getElement(final LoadRunnerVUVisitor visitor, final MethodCall method, final MethodcallContext ctx) { final Page page = WebLink.toElement(visitor, method, ctx); visitor.getCurrentExtractors().clear(); visitor.getCurrentValidators().clear(); visitor.getCurrentHeaders().clear(); visitor.setCurrentRequestFromPage(page); return ImmutableList.of(page); } }
@Override public List<Element> getElement(final LoadRunnerVUVisitor visitor, final MethodCall method, final MethodcallContext ctx) { final Page page = WebCustomRequest.toElement(visitor, method, ctx); if(page == null){ return Collections.emptyList(); } visitor.getCurrentExtractors().clear(); visitor.getCurrentValidators().clear(); visitor.getCurrentHeaders().clear(); visitor.setCurrentRequestFromPage(page); return ImmutableList.of(page); }
@Override public List<Element> getElement(final LoadRunnerVUVisitor visitor, final MethodCall method, final MethodcallContext ctx) { final Page page = WebSubmitForm.toElement(visitor, method, ctx); visitor.getCurrentExtractors().clear(); visitor.getCurrentValidators().clear(); visitor.getCurrentHeaders().clear(); visitor.setCurrentRequestFromPage(page); return ImmutableList.of(page); } }
@Override public List<Element> getElement(final LoadRunnerVUVisitor visitor, final MethodCall method, final MethodcallContext ctx) { visitor.readSupportedFunction(method.getName(), ctx); final Page page = WebUrl.toElement(visitor, method); visitor.getCurrentExtractors().clear(); visitor.getCurrentValidators().clear(); visitor.getCurrentHeaders().clear(); visitor.setCurrentRequestFromPage(page); return ImmutableList.of(page); } }
@Override public List<Element> getElement(LoadRunnerVUVisitor visitor, MethodCall method, MethodcallContext ctx) { visitor.readSupportedFunction(method.getName(), ctx); final Page page = WebSubmitData.toElement(visitor, method); visitor.getCurrentExtractors().clear(); visitor.getCurrentValidators().clear(); visitor.getCurrentHeaders().clear(); visitor.setCurrentRequestFromPage(page); return ImmutableList.of(page); }
/** * 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(); }
@Override public final List<Element> getElement(final LoadRunnerVUVisitor visitor, final MethodCall method, final MethodcallContext ctx) { Preconditions.checkNotNull(method); if(method.getParameters() == null || method.getParameters().size() != 2){ visitor.readSupportedFunctionWithWarn(method.getName(), ctx, METHOD + method.getName() + " should have 2 parameters: " + method.getName() + "(const char *Header, const char *Content)"); return Collections.emptyList(); } final String headerName = MethodUtils.normalizeString(visitor.getLeftBrace(), visitor.getRightBrace(), method.getParameters().get(0)); final String headerValue = MethodUtils.normalizeString(visitor.getLeftBrace(), visitor.getRightBrace(), method.getParameters().get(1)); final Header header = ImmutableHeader.builder().headerName(headerName).headerValue(headerValue).build(); visitor.getCurrentHeaders().add(header); visitor.readSupportedFunction(method.getName(), ctx); return Collections.emptyList(); } }
/** * Generate an immutable request of type Submit form */ @VisibleForTesting protected static PostSubmitFormRequest buildPostSubmitFormRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutablePostSubmitFormRequest.Builder requestBuilder = ImmutablePostSubmitFormRequest.builder() .name(name) .path(name) .httpMethod(Request.HttpMethod.POST) .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); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); MethodUtils.extractItemListAsStringList(visitor, method.getParameters(), ITEMDATA, Optional.empty()) .ifPresent(stringList -> buildPostParamsFromExtract(stringList).forEach(requestBuilder::addPostParameters)); return requestBuilder.build(); }
/** * * @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(); }
/** * Generate an immutable request of type Follow link */ @VisibleForTesting protected static GetFollowLinkRequest buildGetFollowLinkRequest(final LoadRunnerVUVisitor visitor, final MethodCall method, final String name, final String textFollowLink) { final Optional<Properties> snapshotProperties = getSnapshotProperties(visitor, method); final Optional<RecordedFiles> recordedFiles = getRecordedFilesFromSnapshotProperties(visitor, snapshotProperties); final List<Header> recordedHeaders = getHeadersFromRecordedFile(recordedFiles.flatMap(RecordedFiles::recordedRequestHeaderFile)); final ImmutableGetFollowLinkRequest.Builder requestBuilder = ImmutableGetFollowLinkRequest.builder() .name(name) .path(name) .text(textFollowLink) .httpMethod(Request.HttpMethod.GET) .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); visitor.getCurrentRequest().ifPresent(requestBuilder::referer); visitor.getCurrentRequest().ifPresent(cr -> requestBuilder.server(cr.getServer())); requestBuilder.path(buildExtractorPath(snapshotProperties)); return requestBuilder.build(); }
.addAllExtractors(visitor.getCurrentExtractors()) .addAllValidators(visitor.getCurrentValidators()) .addAllHeaders(visitor.getCurrentHeaders()) .addAllHeaders(visitor.getGlobalHeaders()) .addAllHeaders(recordedHeaders) .addAllParameters(MethodUtils.queryToParameterList(mainUrl.getQuery())) .recordedFiles(recordedFiles); visitor.getCurrentHeaders().clear(); return builder.build(); .addAllExtractors(visitor.getCurrentExtractors()) .addAllValidators(visitor.getCurrentValidators()) .addAllHeaders(visitor.getCurrentHeaders()) .addAllHeaders(visitor.getGlobalHeaders()) .addAllHeaders(recordedHeaders) .addAllParameters(MethodUtils.queryToParameterList(mainUrl.getQuery())) .recordedFiles(recordedFiles); visitor.getCurrentHeaders().clear(); return builder.build();