> On April 17, 2015, 1:31 p.m., Michael Park wrote:
> > src/tests/mesos.hpp, lines 866-874
> > <https://reviews.apache.org/r/31265/diff/8/?file=929838#file929838line866>
> >
> > An idea to avoid this: we could promote the `createAllocator` currently
> > in `MasterAllocatorTest` to this file. Then we could do:
> >
> > ```
> > TestAllocator(
> > process::Owned<mesos::master::allocator::Allocator> realAllocator =
> > createAllocator<
> > mesos::internal::master::allocator::HierarchicalDRFAllocator>())
> > ```
Scratch that. I think we can do better. I think rather than `createAllocator`
or `createTestAllocator`, a `create` factory function for `TestAllocator` fits
nicely!
```cpp
class TestAllocator : public mesos::master::allocator::Allocator
{
public:
template <typename T =
mesos::internal::master::allocator::HierarchicalDRFAllocator>
static TestAllocator create() {
// T represents the allocator type. It can be a default built-in
// allocator, or one provided by an allocator module.
Try<Allocator*> allocator = T::create();
CHECK_SOME(allocator);
// Wrap allocator instance in TestAllocator.
process::Owned<Allocator> realAllocator(CHECK_NOTNULL(allocator.get()));
return TestAllocator(realAllocator);
}
...
private:
// No need for default argument here.
TestAllocator(process::Owned<mesos::master::allocator::Allocator>
realAllocator)
: real(realAllocator)
{
...
}
};
```
- Michael
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31265/#review80445
-----------------------------------------------------------
On April 15, 2015, 2:19 p.m., Alexander Rukletsov wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/31265/
> -----------------------------------------------------------
>
> (Updated April 15, 2015, 2:19 p.m.)
>
>
> Review request for mesos, Kapil Arya, Michael Park, and Niklas Nielsen.
>
>
> Bugs: MESOS-2160
> https://issues.apache.org/jira/browse/MESOS-2160
>
>
> Repository: mesos
>
>
> Description
> -------
>
> The factory creates allocator instances in a way identical to how instances
> from modules are created. It allows us to use same typed tests for built-in
> and modularized allocators.
>
>
> Diffs
> -----
>
> src/examples/test_allocator_module.cpp PRE-CREATION
> src/local/local.cpp 289b9bced7bab0d745fe14823efa4e90ec36905e
> src/master/allocator/mesos/allocator.hpp
> fb898f1175b61b442204e6e38c69ccc2838a646f
> src/master/main.cpp 7cce3a0bb808a1cb7bac9acab31eb1c67a15ea9f
> src/tests/cluster.hpp a56b6541adcdebc5866571bbdbb6828df97b34ec
> src/tests/hierarchical_allocator_tests.cpp
> 8861bf398e4bb17b0f74eab4f4af26202447ccef
> src/tests/master_allocator_tests.cpp
> 03a1bb8c92b44bc1ad1b5f5cff8d1fb971df2302
> src/tests/mesos.hpp 42e42ac425a448fcc5e93db1cef1112cbf5e67c4
>
> Diff: https://reviews.apache.org/r/31265/diff/
>
>
> Testing
> -------
>
> make check (Mac OS 10.9.5, Ubuntu 14.04)
>
>
> Thanks,
>
> Alexander Rukletsov
>
>