Hi,

I did some learning today! This is pretty much a very rough draft of the 
tests/refactor of mesos-fetcher that I have come up with. Again, If there are 
some obvious mistakes, please let me know. (this is my first pass after all).
https://github.com/ankurcha/mesos/compare/prefer_2 
<https://github.com/ankurcha/mesos/compare/prefer_2>

My main intention is to break the logic of the fetcher info some very discrete 
components that i can write tests against. I am still re-learning cpp/mesos 
code styles etc so I may be a little slow to catch up but I would really 
appreciate any comments and/or suggestions.

-- Ankur
@ankurcha

> On 2 Nov 2014, at 18:17, Ankur Chauhan <[email protected]> wrote:
> 
> Hi,
> 
> I noticed that the current set of tests in `src/tests/fetcher_tests.cpp` is 
> pretty coarse grained and are more on the lines of a functional test. I was 
> going to add some tests but it seems like if I am to do that I would need to 
> add a test dependency on hadoop. 
> 
> As an alternative, I propose adding a good set of unit tests around the 
> methods used by `src/launcher/fetcher.cpp` and `src/hdfs/hdfs.cpp`. This 
> should be able to catch a good portion of cases at the same time keeping the 
> dependencies and runtime of tests low. What do you guys thing about this?
> 
> PS: I am pretty green in terms of gtest and the overall c++ testing 
> methodology. Can someone give me pointers to good examples of tests in the 
> codebase.
> 
> -- Ankur
> 
>> On 1 Nov 2014, at 22:54, Adam Bordelon <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Thank you Ankur. At first glance, it looks great. We'll do a more thorough 
>> review of it very soon.
>> I know Tim St. Clair had some ideas for fixing MESOS-1711 
>> <https://issues.apache.org/jira/browse/MESOS-1711>; he may want to review 
>> too.
>> 
>> On Sat, Nov 1, 2014 at 8:49 PM, Ankur Chauhan <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Hi Tim,
>> 
>> I just created a review https://reviews.apache.org/r/27483/ 
>> <https://reviews.apache.org/r/27483/> It's my first stab at it and I will 
>> try to add more tests as I figure out how to do the hadoop mocking and 
>> stuff. Have a look and let me know what you think about it so far.
>> 
>> -- Ankur
>> 
>>> On 1 Nov 2014, at 20:05, Ankur Chauhan <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Yea, i saw that the minute i pressed send. I'll start the review board so 
>>> that people can have a look at the change.
>>> 
>>> -- Ankur
>>> 
>>>> On 1 Nov 2014, at 20:01, Tim Chen <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>> Hi Ankur,
>>>> 
>>>> There is a fetcher_tests.cpp in src/tests.
>>>> 
>>>> Tim
>>>> 
>>>> On Sat, Nov 1, 2014 at 7:27 PM, Ankur Chauhan <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> Hi Tim,
>>>> 
>>>> I am trying to find/write some test cases. I couldn't find a 
>>>> fetcher_tests.{cpp|hpp} so once I have something, I'll post on review 
>>>> board. I am new to gmock/gtest so bear with me while i get up to speed.
>>>> 
>>>> -- Ankur
>>>> 
>>>>> On 1 Nov 2014, at 19:23, Timothy Chen <[email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> 
>>>>> Hi Ankur,
>>>>> 
>>>>> Can you post on reviewboard? We can discuss more about the code there.
>>>>> 
>>>>> Tim
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>> On Nov 1, 2014, at 6:29 PM, Ankur Chauhan <[email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> 
>>>>>> Hi Tim,
>>>>>> 
>>>>>> I don't think there is an issue which is directly in line with what i 
>>>>>> wanted but the closest one that I could find in JIRA is 
>>>>>> https://issues.apache.org/jira/browse/MESOS-1711 
>>>>>> <https://issues.apache.org/jira/browse/MESOS-1711>
>>>>>> 
>>>>>> I have a branch ( 
>>>>>> https://github.com/ankurcha/mesos/compare/prefer_hadoop_fetcher 
>>>>>> <https://github.com/ankurcha/mesos/compare/prefer_hadoop_fetcher> ) that 
>>>>>> has a change that would enable users to specify whatever hdfs compatible 
>>>>>> uris to the mesos-fetcher but maybe you can weight in on it. Do you 
>>>>>> think this is the right track? if so, i would like to pick this issue 
>>>>>> and submit a patch for review.
>>>>>> 
>>>>>> -- Ankur
>>>>>> 
>>>>>> 
>>>>>>> On 1 Nov 2014, at 04:32, Tom Arnfeld <[email protected] 
>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>> 
>>>>>>> Completely +1 to this. There are now quite a lot of hadoop compatible 
>>>>>>> filesystem wrappers out in the wild and this would certainly be very 
>>>>>>> useful.
>>>>>>> 
>>>>>>> I'm happy to contribute a patch. Here's a few related issues that might 
>>>>>>> be of interest;
>>>>>>> 
>>>>>>> - https://issues.apache.org/jira/browse/MESOS-1887 
>>>>>>> <https://issues.apache.org/jira/browse/MESOS-1887>
>>>>>>> - https://issues.apache.org/jira/browse/MESOS-1316 
>>>>>>> <https://issues.apache.org/jira/browse/MESOS-1316>
>>>>>>> - https://issues.apache.org/jira/browse/MESOS-336 
>>>>>>> <https://issues.apache.org/jira/browse/MESOS-336>
>>>>>>> - https://issues.apache.org/jira/browse/MESOS-1248 
>>>>>>> <https://issues.apache.org/jira/browse/MESOS-1248>
>>>>>>> 
>>>>>>> On 31 October 2014 22:39, Tim Chen <[email protected] 
>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>> I believe there is already a JIRA ticket for this, if you search for 
>>>>>>> fetcher in Mesos JIRA I think you can find it.
>>>>>>> 
>>>>>>> Tim
>>>>>>> 
>>>>>>> On Fri, Oct 31, 2014 at 3:27 PM, Ankur Chauhan <[email protected] 
>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I have been looking at some of the stuff around the fetcher and saw 
>>>>>>> something interesting. The code for fetcher::fetch method is dependent 
>>>>>>> on a hard coded list of url schemes. No doubt that this works but is 
>>>>>>> very restrictive.
>>>>>>> Hadoop/HDFS in general is pretty flexible when it comes to being able 
>>>>>>> to fetch stuff from urls and has the ability to fetch a large number of 
>>>>>>> types of urls and can be extended by adding configuration into the 
>>>>>>> conf/hdfs-site.xml and core-site.xml
>>>>>>> 
>>>>>>> What I am proposing is that we refactor the fetcher.cpp to prefer to 
>>>>>>> use the hdfs (using hdfs/hdfs.hpp) to do all the fetching if 
>>>>>>> HADOOP_HOME is set and $HADOOP_HOME/bin/hadoop is available. This logic 
>>>>>>> already exists and we can just use it. The fallback logic for using 
>>>>>>> net::download or local file copy is may be left in place for 
>>>>>>> installations that do not have hadoop configured. This means that if 
>>>>>>> hadoop is present we can directly fetch urls such as tachyon://... 
>>>>>>> snackfs:// ... cfs:// .... ftp://... s3://... http:// ... file:// with 
>>>>>>> no extra effort. This makes up for a much better experience when it 
>>>>>>> comes to debugging and extensibility.
>>>>>>> 
>>>>>>> What do others think about this?
>>>>>>> 
>>>>>>> - Ankur
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
>> 
>> 
> 

Reply via email to