mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
commit
03a3afd86e
743
devdocs/sketches/docs-publishing-flow.svg
Normal file
743
devdocs/sketches/docs-publishing-flow.svg
Normal file
@ -0,0 +1,743 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--
|
||||
- Copyright (c) 2022 nosqlbench
|
||||
-
|
||||
- Licensed under the Apache License, Version 2.0 (the "License");
|
||||
- you may not use this file except in compliance with the License.
|
||||
- You may obtain a copy of the License at
|
||||
-
|
||||
- http://www.apache.org/licenses/LICENSE-2.0
|
||||
-
|
||||
- Unless required by applicable law or agreed to in writing, software
|
||||
- distributed under the License is distributed on an "AS IS" BASIS,
|
||||
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
- See the License for the specific language governing permissions and
|
||||
- limitations under the License.
|
||||
-->
|
||||
|
||||
<svg
|
||||
width="14in"
|
||||
height="8.5in"
|
||||
viewBox="0 0 355.6 215.9"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
sodipodi:docname="docs-publishing-flow.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path10457" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path10454" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient983">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop979" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop981" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(3.7795276,0,0,3.7795276,-496.71822,-166.61139)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985-1"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(3.7795276,0,0,3.7795276,-304.71821,-473.13109)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient983"
|
||||
id="linearGradient985-14"
|
||||
x1="131.67278"
|
||||
y1="63.5"
|
||||
x2="173.12723"
|
||||
y2="63.5"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-3"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-6" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-6"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-2" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-1"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-8" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-9"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-20" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-37"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-5" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-2"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-28" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-7"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-53" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-62"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-9" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-27"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-0" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-36"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-06" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-61"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-87" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-20"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path10457-23" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.060049"
|
||||
inkscape:cx="685.17788"
|
||||
inkscape:cy="241.49911"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="true"
|
||||
units="in"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2019"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="2160"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:pagecheckerboard="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid895"
|
||||
units="in"
|
||||
spacingx="3.175"
|
||||
spacingy="3.175"
|
||||
empspacing="8"
|
||||
color="#3f3fff"
|
||||
opacity="0.21568627"
|
||||
empcolor="#3f3fff"
|
||||
empopacity="0.42352941" />
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid918"
|
||||
units="in"
|
||||
spacingx="1.5875"
|
||||
spacingy="1.5875"
|
||||
empspacing="8"
|
||||
dotted="false"
|
||||
color="#3f3fff"
|
||||
opacity="0.0627451" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="data"
|
||||
style="display:inline"
|
||||
transform="translate(0,76.2)">
|
||||
<g
|
||||
id="g3395"
|
||||
transform="translate(-101.6,28.574999)">
|
||||
<rect
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853"
|
||||
width="79.375"
|
||||
height="30.1625"
|
||||
x="117.475"
|
||||
y="-47.625" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-35.909264"
|
||||
id="text1713"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1711"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-35.909264">NB</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="163.23721"
|
||||
y="-22.68014"
|
||||
id="tspan1580">main branch</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3230"
|
||||
transform="translate(171.45,17.4625)">
|
||||
<rect
|
||||
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853-3"
|
||||
width="60.324997"
|
||||
height="31.749998"
|
||||
x="96.837502"
|
||||
y="22.225" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="33.94603"
|
||||
id="text2399"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2397"
|
||||
style="stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="33.94603">RELEASED</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="stroke-width:0.264583"
|
||||
x="102.53144"
|
||||
y="47.175156"
|
||||
id="tspan24378">NB-DOCS</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g3230-6"
|
||||
transform="translate(173.0375,-41.275)"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="rect853-3-7"
|
||||
width="58.737499"
|
||||
height="30.162498"
|
||||
x="96.837502"
|
||||
y="22.225" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="34.417007"
|
||||
id="text2399-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2397-3"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="34.417007">NB-BUILD-</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="stroke-width:0.264583"
|
||||
x="99.298256"
|
||||
y="47.646133"
|
||||
id="tspan3616">DOCS</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g8349"
|
||||
transform="translate(36.515457,20.6375)">
|
||||
<ellipse
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="path4433"
|
||||
cx="127.79375"
|
||||
cy="-24.606251"
|
||||
rx="18.25625"
|
||||
ry="15.08125" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-30.149092"
|
||||
id="text1713-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1711-2"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-30.149092">non-</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-23.093542"
|
||||
id="tspan4984">release</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-16.037991"
|
||||
id="tspan4986">build</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g8349-9"
|
||||
style="display:inline"
|
||||
transform="translate(36.152018,80.16875)">
|
||||
<ellipse
|
||||
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
|
||||
id="path4433-1"
|
||||
cx="127.79375"
|
||||
cy="-24.606251"
|
||||
rx="18.25625"
|
||||
ry="15.08125" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-26.017361"
|
||||
id="text1713-6-2"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-26.017361"
|
||||
id="tspan4984-0">release</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
|
||||
x="127.69779"
|
||||
y="-18.961811"
|
||||
id="tspan4986-9">build</tspan></text>
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 95.249998,-3.9687508 50.802952,0"
|
||||
id="path10370"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3395"
|
||||
inkscape:connection-end="#g8349" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 83.019593,11.112499 65.723847,36.09988"
|
||||
id="path10372"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3395"
|
||||
inkscape:connection-end="#g8349-9" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 182.56545,-3.9687507 87.30955,2e-7"
|
||||
id="path10817"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g8349"
|
||||
inkscape:connection-end="#g3230-6" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 182.20202,55.562499 86.08548,0"
|
||||
id="path10921"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g8349-9"
|
||||
inkscape:connection-end="#g3230" />
|
||||
<g
|
||||
id="g11511"
|
||||
transform="translate(155.575,-112.7125)">
|
||||
<circle
|
||||
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
id="path11306"
|
||||
cx="56.960236"
|
||||
cy="65.919228"
|
||||
r="2.7336953" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 57.15,68.2625 -10e-7,6.35 -3.174999,6.35"
|
||||
id="path11421"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 57.149999,74.6125 3.175001,6.35"
|
||||
id="path11423"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
d="m 53.975,71.4375 h 6.35"
|
||||
id="path11425"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<path
|
||||
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 212.725,-40.77668 57.15,24.313495"
|
||||
id="path11775"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g11511"
|
||||
inkscape:connection-end="#g3230-6" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="M 212.725,-40.77668 95.249998,-13.263682"
|
||||
id="path11944"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g11511"
|
||||
inkscape:connection-end="#g3395" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
|
||||
d="m 299.04267,11.112499 -0.381,28.575001"
|
||||
id="path12048"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#g3230-6"
|
||||
inkscape:connection-end="#g3230" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-43.492035"
|
||||
id="text13414"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan13412"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-43.492035">edit embeded</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-35.554535"
|
||||
id="tspan13944">docs, javadoc,</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="127.40736"
|
||||
y="-27.617033"
|
||||
id="tspan26081">and code</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-41.987053"
|
||||
id="text13414-7"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-41.987053"
|
||||
id="tspan13944-6">edit docs</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="229.11111"
|
||||
y="-34.049553"
|
||||
id="tspan18006">content</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="18.575722"
|
||||
id="text13414-7-1"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="18.575722"
|
||||
id="tspan18006-9">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan19860">all</tspan> docs</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="26.513222"
|
||||
id="tspan18420">content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan21172">main</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="300.85052"
|
||||
y="34.450722"
|
||||
id="tspan18422">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="52.958786"
|
||||
id="text13414-7-1-3"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="52.958786"
|
||||
id="tspan18006-9-1">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan19284">embedded</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="60.896286"
|
||||
id="tspan18941">docs content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan10164">main</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.48294"
|
||||
y="68.833786"
|
||||
id="tspan18422-4">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="-5.9306483"
|
||||
id="text13414-7-1-3-7"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="-5.9306483"
|
||||
id="tspan18006-9-1-8">publish <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan18684">embedded</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="2.0068517"
|
||||
id="tspan18941-4">docs content to <tspan
|
||||
style="font-weight:bold"
|
||||
id="tspan11314">preview</tspan></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-size:6.35px;stroke-width:0.264583"
|
||||
x="185.37083"
|
||||
y="9.9443502"
|
||||
id="tspan18422-4-5">docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="27.209949"
|
||||
id="text27722"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan27720"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="27.209949">on push to main</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="31.619661"
|
||||
id="tspan27724">and change to</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="133.32997"
|
||||
y="36.029373"
|
||||
id="tspan27726">RELEASENOTES.md</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="18.714157"
|
||||
id="text27722-6"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="18.714157"
|
||||
id="tspan27726-6">Initially, this doc site</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="23.123869"
|
||||
id="tspan69260">will be checkpointed </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="27.533583"
|
||||
id="tspan69262">manually into the </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
|
||||
x="259.55676"
|
||||
y="31.943295"
|
||||
id="tspan69264">main docs site</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;stroke-width:0.264583"
|
||||
x="106.08576"
|
||||
y="0.33000755"
|
||||
id="text27722-5"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan27720-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="0.33000755">on push to main</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="4.7397203"
|
||||
id="tspan27724-2">and NO change to</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
|
||||
x="106.08576"
|
||||
y="9.1494331"
|
||||
id="tspan27726-2">RELEASENOTES.md</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="boxes"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-4.9)"
|
||||
style="display:inline;opacity:0.438" />
|
||||
</svg>
|
After Width: | Height: | Size: 31 KiB |
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
|
||||
|
||||
import io.nosqlbench.virtdata.api.annotations.Example;
|
||||
import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper;
|
||||
|
||||
import java.util.function.LongUnaryOperator;
|
||||
|
||||
/**
|
||||
* <P>Compute a value which increases monotonically with respect to the cycle value.
|
||||
* All values for f(X+(m>=0)) will be equal or greater than f(X). In effect, this
|
||||
* means that with a sequence of monotonic inputs, the results will be monotonic as
|
||||
* well as clustered. The values will approximate input/average, but will vary in frequency
|
||||
* around a simple binomial distribution.</P>
|
||||
*
|
||||
* <p>The practical effect of this is to be able to compute a sequence of values
|
||||
* over inputs which can act as foreign keys, but which are effectively ordered.</p>
|
||||
*
|
||||
* <H3>Call for Ideas</H3>
|
||||
* <p>Due to the complexity of generalizing this as a pure function over other distributions,
|
||||
* this is the only function of this type for now. If you are interested in this problem
|
||||
* domain and have some suggestions for how to extend it to other distributions, please
|
||||
* join the project or let us know.</p>
|
||||
*/
|
||||
@ThreadSafeMapper
|
||||
public class TriangularStepFunction implements LongUnaryOperator {
|
||||
|
||||
private final Hash hasher = new Hash();
|
||||
private final long average;
|
||||
private final LongUnaryOperator sizer;
|
||||
|
||||
private final long variance;
|
||||
|
||||
|
||||
@Example({"TriangularStepFunction(100,20)","Create a sequence of values where the average is 100, but the range of values is between 80 and 120."})
|
||||
@Example({"TriangularStepFunction(80,10)","Create a sequence of values where the average is 80, but the range of values is between 70 and 90."})
|
||||
TriangularStepFunction(long average, long variance) {
|
||||
if (average<=0 || variance < 0 || variance > average) {
|
||||
throw new RuntimeException(
|
||||
"The average must be positive, variance non-negative and the variance must be less than the average. " +
|
||||
"You provided average=" + average + ", variance=" + variance + "."
|
||||
);
|
||||
}
|
||||
this.average = average;
|
||||
this.variance = variance;
|
||||
this.sizer = new HashRange(average-variance,average+variance);
|
||||
}
|
||||
|
||||
TriangularStepFunction(long average) {
|
||||
this(average, average/2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long applyAsLong(long operand) {
|
||||
// window number
|
||||
long count = operand / average;
|
||||
// offset within window
|
||||
long offset = operand % average;
|
||||
// base of window
|
||||
long base = operand - offset;
|
||||
// variate up to window size
|
||||
long variance = sizer.applyAsLong(base);
|
||||
// variate offset from start of window
|
||||
long slice = base + variance;
|
||||
// select current or next window
|
||||
long result = ((slice)>operand) ? count : count + 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.getClass().getSimpleName()+"{average="+ average +",variance="+variance+"}";
|
||||
}
|
||||
}
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Copyright (c) 2022 nosqlbench
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.Arrays;
|
||||
import java.util.LongSummaryStatistics;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TriangularStepFunctionTest {
|
||||
|
||||
private static final int LABEL=0;
|
||||
private static final int FREQUENCY=1;
|
||||
|
||||
@Test
|
||||
public void testExample1() {
|
||||
TriangularStepFunction e1 = new TriangularStepFunction(100, 20);
|
||||
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
|
||||
System.out.println(Arrays.toString(runLengths));
|
||||
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(80L);
|
||||
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(120L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExample2() {
|
||||
TriangularStepFunction e1 = new TriangularStepFunction(80, 10);
|
||||
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
|
||||
System.out.println(Arrays.toString(runLengths));
|
||||
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(70L);
|
||||
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(90L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncrementalVariance() {
|
||||
TriangularStepFunction f = new TriangularStepFunction(100, 0);
|
||||
assertThat(f.applyAsLong(0L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(1L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(99L)).isEqualTo(0L);
|
||||
assertThat(f.applyAsLong(100L)).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testVariance() {
|
||||
long first=0;
|
||||
TriangularStepFunction f = new TriangularStepFunction(100,1);
|
||||
var rlestats = rleStatsFor(f, 0, 100000);
|
||||
LongSummaryStatistics stats99to101 = statsForRle((int) f.applyAsLong(first),rlestats);
|
||||
assertThat(stats99to101.getMin()).isEqualTo(99L);
|
||||
assertThat(stats99to101.getMax()).isEqualTo(101L);
|
||||
|
||||
int[][] histo = histoFor(rlestats);
|
||||
LongSummaryStatistics histoStats = new LongSummaryStatistics();
|
||||
for (int[] ints : histo) {
|
||||
histoStats.accept(ints[LABEL]);
|
||||
}
|
||||
assertThat(histoStats.getAverage()).isEqualTo(100);
|
||||
}
|
||||
|
||||
private int[] rleStatsFor(TriangularStepFunction f, long firstTrialIncl, long lastTrialExcl) {
|
||||
long firstBucket = f.applyAsLong(firstTrialIncl);
|
||||
long lastBucket = f.applyAsLong(lastTrialExcl);
|
||||
if (firstBucket>Integer.MAX_VALUE||lastBucket>Integer.MAX_VALUE) {
|
||||
throw new InvalidParameterException("can't fit result data into range of ints from long [" + firstBucket + ","+lastBucket+"]");
|
||||
}
|
||||
int base = (int) firstBucket;
|
||||
int[] counts = new int[(((int) lastBucket-(int)firstBucket))+1];
|
||||
for (long trial=firstTrialIncl; trial < lastTrialExcl; trial++) {
|
||||
long result = f.applyAsLong(trial);
|
||||
counts[(int)(result-base)]++;
|
||||
}
|
||||
// remove last partial, as only the front initial partial is compensated
|
||||
counts= Arrays.copyOfRange(counts,0,counts.length-1);
|
||||
return counts;
|
||||
}
|
||||
|
||||
private int[][] histoFor(int[] counts) {
|
||||
var minval = IntStream.of(counts).min().orElseThrow();
|
||||
var maxval = IntStream.of(counts).max().orElseThrow();
|
||||
|
||||
int[][] histo = new int[(maxval-minval)+1][2];
|
||||
for (int i = 0; i <= histo[LABEL].length; i++) {
|
||||
histo[i][LABEL]=i+minval;
|
||||
}
|
||||
|
||||
for (int count : counts) {
|
||||
System.out.println(count);
|
||||
histo[count-minval][FREQUENCY]++;
|
||||
}
|
||||
return histo;
|
||||
}
|
||||
|
||||
private LongSummaryStatistics statsForRle(int base, int[] counts) {
|
||||
LongSummaryStatistics stats = new LongSummaryStatistics();
|
||||
for (int element = 0; element < counts.length; element++) {
|
||||
int count = counts[element];
|
||||
if (count==0) {
|
||||
continue;
|
||||
}
|
||||
stats.accept(count);
|
||||
}
|
||||
return stats;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user