blob: f6ea46f4bf174e53e815bd8f1a0785246da7efab [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ArtifactClient (Apache Beam 2.50.0)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ArtifactClient (Apache Beam 2.50.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/it/gcp/artifacts/GcsArtifact.html" title="class in org.apache.beam.it.gcp.artifacts"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/it/gcp/artifacts/ArtifactClient.html" target="_top">Frames</a></li>
<li><a href="ArtifactClient.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.it.gcp.artifacts</div>
<h2 title="Interface ArtifactClient" class="title">Interface ArtifactClient</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>org.apache.beam.it.common.ResourceManager</dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../../org/apache/beam/it/gcp/storage/GcsResourceManager.html" title="class in org.apache.beam.it.gcp.storage">GcsResourceManager</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ArtifactClient</span>
extends org.apache.beam.it.common.ResourceManager</pre>
<div class="block">Interface for working with test artifacts.
<p>It is the responsibility of implementations to make sure that artifacts are kept separate from
each other. Using a GCS path, this isolation would create a path like the following: <code>gs://test-class-name/run-id/test-method-name</code>. Each directory means:
<ul>
<li>test-class-name: A name given to the directory for a test class. This does not need to be
identical to the class name, but it should clearly identify the class from other test
classes. This is intended for long-lived artifacts that have value beyond a specific run of
a test, such as a result file.
<li>run-id: An id assigned to a run of that test class. This will be handled by implementations
of this client. It is intended for artifacts that may be referenced by multiple methods in
a test class.
<li>test-method-name: A name given to the directory for a method within the test class. This
does not need to be identical to the method name, but it should clearly identify the method
from other test methods within the same test class. This is intended for input and output
artifacts specific to the test method.
</ul>
<p>Separate input/output directories are optional and the responsibility of the test writer to
maintain.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#cleanupAll--">cleanupAll</a></span>()</code>
<div class="block">Deletes all the files located under test-class-name/run-id.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#createArtifact-java.lang.String-byte:A-">createArtifact</a></span>(java.lang.String&nbsp;artifactName,
byte[]&nbsp;contents)</code>
<div class="block">Creates a new artifact in whatever service is being used to store them.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#createArtifact-java.lang.String-java.lang.String-">createArtifact</a></span>(java.lang.String&nbsp;artifactName,
java.lang.String&nbsp;contents)</code>
<div class="block">Creates a new artifact in whatever service is being used to store them.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#listArtifacts-java.lang.String-java.util.regex.Pattern-">listArtifacts</a></span>(java.lang.String&nbsp;prefix,
java.util.regex.Pattern&nbsp;regex)</code>
<div class="block">Lists all artifacts under test-class-name/run-id/<code>prefix</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#listArtifacts-org.junit.rules.TestName-java.util.regex.Pattern-">listArtifacts</a></span>(<a href="https://static.javadoc.io/junit/junit/4.13.1/org/junit/rules/TestName.html?is-external=true" title="class or interface in org.junit.rules">TestName</a>&nbsp;testName,
java.util.regex.Pattern&nbsp;regex)</code>
<div class="block">Lists all artifacts under test-class-name/run-id/<code>prefix</code>.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#runId--">runId</a></span>()</code>
<div class="block">Returns the id associated with the particular run of the test class.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#uploadArtifact-java.lang.String-java.nio.file.Path-">uploadArtifact</a></span>(java.lang.String&nbsp;artifactName,
java.nio.file.Path&nbsp;localPath)</code>
<div class="block">Uploads a local file to the service being used for storing artifacts.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/it/gcp/artifacts/ArtifactClient.html#uploadArtifact-java.lang.String-java.lang.String-">uploadArtifact</a></span>(java.lang.String&nbsp;artifactName,
java.lang.String&nbsp;localPath)</code>
<div class="block">Uploads a local file to the service being used for storing artifacts.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="runId--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>runId</h4>
<pre>java.lang.String&nbsp;runId()</pre>
<div class="block">Returns the id associated with the particular run of the test class.</div>
</li>
</ul>
<a name="createArtifact-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createArtifact</h4>
<pre><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&nbsp;createArtifact(java.lang.String&nbsp;artifactName,
java.lang.String&nbsp;contents)</pre>
<div class="block">Creates a new artifact in whatever service is being used to store them.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>artifactName</code> - the name of the artifact. If this is supposed to go under an input/output
directory, then it should include that (example: input/artifact.txt)</dd>
<dd><code>contents</code> - the contents of the artifact in String format</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a representation of the created artifact</dd>
</dl>
</li>
</ul>
<a name="createArtifact-java.lang.String-byte:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createArtifact</h4>
<pre><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&nbsp;createArtifact(java.lang.String&nbsp;artifactName,
byte[]&nbsp;contents)</pre>
<div class="block">Creates a new artifact in whatever service is being used to store them.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>artifactName</code> - the name of the artifact. If this is supposed to go under an input/output
directory, then it should include that (example: input/artifact.txt)</dd>
<dd><code>contents</code> - the contents of the artifact in byte array format</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a representation of the created artifact</dd>
</dl>
</li>
</ul>
<a name="uploadArtifact-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uploadArtifact</h4>
<pre><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&nbsp;uploadArtifact(java.lang.String&nbsp;artifactName,
java.lang.String&nbsp;localPath)
throws java.io.IOException</pre>
<div class="block">Uploads a local file to the service being used for storing artifacts.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>artifactName</code> - the name of the artifact. If this is supposed to go under an input/output
directory, then it should include that (example: input/artifact.txt)</dd>
<dd><code>localPath</code> - the absolute local path to the file to upload</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a representation of the uploaded artifact</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if there is an issue reading the local file</dd>
</dl>
</li>
</ul>
<a name="uploadArtifact-java.lang.String-java.nio.file.Path-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>uploadArtifact</h4>
<pre><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&nbsp;uploadArtifact(java.lang.String&nbsp;artifactName,
java.nio.file.Path&nbsp;localPath)
throws java.io.IOException</pre>
<div class="block">Uploads a local file to the service being used for storing artifacts.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>artifactName</code> - the name of the artifact. If this is supposed to go under an input/output
directory, then it should include that (example: input/artifact.txt)</dd>
<dd><code>localPath</code> - the local path to the file to upload</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a representation of the uploaded artifact</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code> - if there is an issue reading the local file</dd>
</dl>
</li>
</ul>
<a name="listArtifacts-org.junit.rules.TestName-java.util.regex.Pattern-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>listArtifacts</h4>
<pre>java.util.List&lt;<a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&gt;&nbsp;listArtifacts(<a href="https://static.javadoc.io/junit/junit/4.13.1/org/junit/rules/TestName.html?is-external=true" title="class or interface in org.junit.rules">TestName</a>&nbsp;testName,
java.util.regex.Pattern&nbsp;regex)</pre>
<div class="block">Lists all artifacts under test-class-name/run-id/<code>prefix</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>testName</code> - the test name to use as the prefix on the testing artifacts.</dd>
<dd><code>regex</code> - a regex to use for filtering out unwanted artifacts</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>all the artifacts whose name matches regex</dd>
</dl>
</li>
</ul>
<a name="listArtifacts-java.lang.String-java.util.regex.Pattern-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>listArtifacts</h4>
<pre>java.util.List&lt;<a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts">Artifact</a>&gt;&nbsp;listArtifacts(java.lang.String&nbsp;prefix,
java.util.regex.Pattern&nbsp;regex)</pre>
<div class="block">Lists all artifacts under test-class-name/run-id/<code>prefix</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>prefix</code> - the prefix to use along with the fixed values method above. This must include the
test-method-name value, but it can include other directories or files under it.</dd>
<dd><code>regex</code> - a regex to use for filtering out unwanted artifacts</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>all the artifacts whose name matches regex</dd>
</dl>
</li>
</ul>
<a name="cleanupAll--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>cleanupAll</h4>
<pre>void&nbsp;cleanupAll()</pre>
<div class="block">Deletes all the files located under test-class-name/run-id.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>cleanupAll</code>&nbsp;in interface&nbsp;<code>org.apache.beam.it.common.ResourceManager</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/it/gcp/artifacts/Artifact.html" title="interface in org.apache.beam.it.gcp.artifacts"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/it/gcp/artifacts/GcsArtifact.html" title="class in org.apache.beam.it.gcp.artifacts"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/it/gcp/artifacts/ArtifactClient.html" target="_top">Frames</a></li>
<li><a href="ArtifactClient.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>