Thanks Mike - no apologies needed at all

I’ll aim to reshape the GH repo I did to illustrate what we outlined, with an 
example of use.

Outstanding is some OS X binaries if anyone has some time?

Have a good trip.

Tim,
Sent from my iPhone 

> On 9 Aug 2018, at 14:05, Mike Percy <mpe...@apache.org> wrote:
> 
> Hi Tim,
> Sorry for the delay in responding, I've been trying to get back to this.
> You make some great points. If we can forego Maven/Gradle plugins, we can
> do this with a lot less work. Initially, I was concerned about unpacking
> the bits potentially more than strictly necessary, but it seems likely that
> the CPU / IO required to do the unpacking would probably not be noticeable
> in the grand scheme of running tests against a Kudu MiniCluster, especially
> if it's only done once per test file (using @BeforeClass or similar). Also,
> as long as there is some way to clean up the files that were unpacked and
> avoid potentially filling up a temp dir then nobody should have a problem
> with this approach... perhaps we can register a JVM shutdown hook and also
> provide some kind of teardown() method so people can ensure the files get
> cleaned up as appropriate (I saw the TODO in your test code for this;
> protoc uses File.deleteOnExit()).
> 
> Regarding creating the binary artifacts, I don't think it's too big of a
> burden to ask the release manager to upload either a RHEL 6 or macOS binary
> test artifact based on the output of a script, and ask the PMC for help to
> get a binary for the other platform.
> 
> I'm out of town for the next couple of weeks but once I get back I'll see
> if I can push this forward a bit more.
> 
> Thanks!
> Mike
> 
> 
> On Thu, Aug 2, 2018 at 10:57 PM Tim Robertson <timrobertson...@gmail.com>
> wrote:
> 
>> Thanks to you for making this test possible Mike.
>> 
>> I was approaching this emulating protoc where they put the binaries as
>> artifacts for Maven [1].
>> A slight difference is that protoc is a single file while your tarball has
>> several. I notice that the protoc build plugin for maven also copies out
>> from the jar to a local filesystem [2] so I just copied that approach.
>> 
>> What I could imagine is we have a jar with the binaries and a single class
>> (say EmbeddedKudu) that copies the binaries into a temporary directory (as
>> my hack in GH).
>> 
>> A user would then do the following:
>> 
>> <!-- finds the environment -->
>> <build>
>>    <extensions>
>>        <extension>
>>            <groupId>kr.motd.maven</groupId>
>>            <artifactId>os-maven-plugin</artifactId>
>>            <version>1.6.0</version>
>>        </extension>
>>    </extensions>
>> </build>
>> ....
>> <!-- Adds mini cluster -->
>> <dependency>
>>    <groupId>org.apache.kudu</groupId>
>>    <artifactId>kudu-client</artifactId>
>>    <version>1.7.0</version>
>>    <classifier>tests</classifier>
>> </dependency>
>> <!-- Adds an embedded Kudu -->
>> <dependency>
>>    <groupId>org.apache.kudu</groupId>
>>    <artifactId>kudu-test-server</artifactId>
>>    <version>1.7.0</version>
>>    <classifier>${os.detected.classifier}</classifier>
>> </dependency>
>> 
>> 
>> The detect classifier stuff is copied from protoc, but perhaps we'd just
>> state that available options are (?) linux / OSX and ignore autodetection.
>> 
>> And in code users would do something like:
>> 
>> EmbeddedKudu.prepare(); // copies kudu from the jar and sets the
>> system variable (as per my example)
>> MiniKuduCluster miniCluster =
>>    new
>> MiniKuduCluster.MiniKuduClusterBuilder().numMasters(1).numTservers(1).build();
>> 
>> 
>> What this would mean:
>> 
>> - no change to the existing Kudu code packkaging
>> - leverage caching of the binaries as any Java artifact
>> - download would be at build time not test runtime - only copying out from
>> the jar each time
>> - simple to include in most build environments (not tied to maven as a
>> plugin)
>> 
>> I can't comment if it makes sense to do this WRT the binaries though and it
>> would mean building and releasing binaries into a jar on each Kudu release
>> (as protoc does).
>> 
>> WDYT?
>> 
>> Thanks,
>> Tim
>> 
>> [1] http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.6.1/
>> [2]
>> 
>> https://github.com/os72/protoc-jar-maven-plugin/blob/master/src/main/java/com/github/os72/protocjar/maven/ProtocJarMojo.java#L664
>> 
>>> On Thu, Aug 2, 2018 at 10:28 PM, Mike Percy <mpe...@apache.org> wrote:
>>> 
>>> Ha, neat, thanks for posting this, Tim. It's a nice proof of concept.
>>> 
>>> I was imagining that we would try to implement the downloading part as a
>>> Maven plugin, but maybe it could work to try to download the artifacts at
>>> runtime with a JUnit test. Do you think we could cache the artifacts
>>> somewhere, maybe in the Maven repo somehow, so we don't have to download
>>> the artifact every time we want to use it? I was hoping to simply be able
>>> to ship a tarball or a jar of the binaries separately from the test
>>> framework code.
>>> 
>>> Mike
>>> 
>>> On Thu, Aug 2, 2018 at 8:42 AM Tim Robertson <timrobertson...@gmail.com>
>>> wrote:
>>> 
>>>> Hi folks
>>>> 
>>>> I've not had too much time, but I threw this together using Mike's
>>>> binaries:
>>>>  https://github.com/timrobertson100/kudu-test-server
>>>> 
>>>> I think this shows that running a mini cluster is possible using the
>>>> binaries Mike prepared when they are included in a jar (on CentOS 7.4
>> at
>>>> least).
>>>> 
>>>> Please don't flame me for the code - it was a rush job - but perhaps
>> you
>>>> could verify it works for you Mike?
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Thu, Jul 19, 2018 at 12:35 AM, Mike Percy <mpe...@apache.org>
>> wrote:
>>>> 
>>>>> On Wed, Jul 18, 2018 at 1:24 PM Tim Robertson <
>>> timrobertson...@gmail.com
>>>>> 
>>>>> wrote:
>>>>> 
>>>>>>> I'm pretty busy this week and would be happy to get some help on
>>> this
>>>>> if
>>>>>> anybody has cycles to spare.
>>>>>> 
>>>>>> Thanks Mike - I'll look into 3) and if we get it working I'm happy
>> to
>>>>> offer
>>>>>> a PR for 4).
>>>>>> This is an evening project for me so I might be a little slow too -
>>> if
>>>>>> someone else is keen and has time please feel free to jump in.
>>>>>> 
>>>>> 
>>>>> Sounds great! I think Grant started working on #4 but I don't know
>> how
>>>> far
>>>>> he got.
>>>>> 
>>>>> Mike
>>>>> 
>>>> 
>>> 
>> 

Reply via email to