Skip to content

Commit

Permalink
Merge branch 'release/0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
kmaehashi committed Jun 29, 2015
2 parents a7cf735 + 9f16fd8 commit cc95289
Show file tree
Hide file tree
Showing 106 changed files with 2,937 additions and 677 deletions.
31 changes: 31 additions & 0 deletions ChangeLog.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
Release 0.8.0 - 2015/06/29
--------------------------

* Changes to Supported Systems
* Red Hat Enterprise Linux (RHEL) 7 is now officially supported (#940, #1004)

* Improvements
* save RPC now returns the path to the saved model file (#562, #971, #1015, #1020)
* Support non-commutative functions in combination feature plug-in (#999)
* classifier: improve performance by removing giant lock (#968, #976)
* Improve push mixer performance (#989, #1008)
* Improve error handling of proxies (#985, #993)
* Add man pages for commands (#1005, #1011)
* Code cleanup (#1003)

* Bug fixes
* bandit: fix reset API returns false when called before MIX (#994, #1007)
* bandit: CHT replication level changed to 1 to avoid double counting (#1017)
* classifier: set_label is now merged using all_and in distributed environment (#1002, #1006)
* nearest_neighbor: fix to print config on startup (#984, #986)
* bandit: fix bandit client is not included in client.hpp (#996)
* Fix push mixer not mixing rows correctly (#990, #991)
* Fix skip mixer not choosing peers correctly (#915, #995, #997)
* Fix error reporting of failures occured before initializing logger (#982, #987)
* Fix sigwait thread race condition (#988, #992)
* Fix cleanup race condition when ZooKeeper session expiry (#967, #998)
* Fix IDL files missing from installation (#1009, #1010)
* Fix C++ client tests not working (#959, #1018)
* Fix RPM packages does not declare clear version dependency (#933, #1001)
* Fix RPM packages to correctly generate debuginfo packages (#970, #1000)

Release 0.7.2 - 2015/04/27
--------------------------

Expand Down
2 changes: 1 addition & 1 deletion client_test/anomaly_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ TEST(anomaly_test, get_status) {

TEST(anomaly_test, save_load) {
anomaly cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("anomaly.save_test.model"));
ASSERT_EQ(1, cli.save("anomaly.save_test.model").size());
ASSERT_TRUE(cli.load("anomaly.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/classifier_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ TEST(classifier_test, get_status) {

TEST(classifier_test, save_load) {
classifier cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("classifier.save_test.model"));
ASSERT_EQ(1, cli.save("classifier.save_test.model").size());
ASSERT_TRUE(cli.load("classifier.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/clustering_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ TEST(clustering_test, get_status) {

TEST(clustering_test, save_load) {
clustering cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("clustering.save_test.model"));
ASSERT_EQ(1, cli.save("clustering.save_test.model").size());
ASSERT_TRUE(cli.load("clustering.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/graph_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ TEST(graph_test, get_status) {

TEST(graph_test, save_load) {
graph cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("graph.save_test.model"));
ASSERT_EQ(1, cli.save("graph.save_test.model").size());
ASSERT_TRUE(cli.load("graph.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/nearest_neighbor_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ TEST(nearest_neighbor_test, get_status) {

TEST(nearest_neighbor_test, save_load) {
nearest_neighbor cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("nearest_neighbor.save_test.model"));
ASSERT_EQ(1, cli.save("nearest_neighbor.save_test.model").size());
ASSERT_TRUE(cli.load("nearest_neighbor.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/recommender_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ TEST(recommender_test, get_status) {

TEST(recommender_test, save_load) {
recommender cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("recommender.save_test.model"));
ASSERT_EQ(1, cli.save("recommender.save_test.model").size());
ASSERT_TRUE(cli.load("recommender.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/regression_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ TEST(regression_test, get_status) {

TEST(regression_test, save_load) {
regression cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("regression.save_test.model"));
ASSERT_EQ(1, cli.save("regression.save_test.model").size());
ASSERT_TRUE(cli.load("regression.save_test.model"));
}

Expand Down
2 changes: 1 addition & 1 deletion client_test/stat_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ TEST(stat_test, get_status) {

TEST(stat_test, save_load) {
stat_client cli(host(), port(), cluster_name(), timeout());
ASSERT_TRUE(cli.save("stat.save_test.model"));
ASSERT_EQ(1, cli.save("stat.save_test.model").size());
ASSERT_TRUE(cli.load("stat.save_test.model"));
}

Expand Down
73 changes: 28 additions & 45 deletions client_test/test_gtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@

class ClientGoogleTestBase():
@classmethod
def init_test(cls):
def find_testcases(cls, test_program):
# Collect all test cases
args = [ cls.test_program, '--gtest_list_tests' ]
args = [ test_program, '--gtest_list_tests' ]
proc = LocalSubprocess(args)
proc.start()
returncode = proc.wait()
if returncode != 0:
raise JubaSkipTest('%s cannot list testcases' % cls.test_program)
raise JubaSkipTest('%s cannot list testcases' % test_program)

# read input
stri = StringIO(proc.stdout)
cls.testcase = []
testcases = []
current_test = None
re_test = re.compile('^([a-zA-Z0-9_]+\.)')
re_testcase = re.compile('^ ([a-zA-Z0-9_]+)')
Expand All @@ -38,20 +38,24 @@ def init_test(cls):

match = re_testcase.match(line)
if match and current_test:
cls.testcase.append('%s%s' % (current_test, match.group(1)))
testcases.append('%s%s' % (current_test, match.group(1)))
return testcases

@classmethod
def setUpCluster(cls, env):
cls.env = env

@classmethod
def generateTests(cls, env):
for service, program in env.get_param('CPP_GTEST').items():
service, program
cls.service = service
cls.test_program = program
cls.init_test()
for test in cls.testcase:
yield cls.gtest, service, test
if env.get_param('CPP_GTEST') is None:
raise JubaSkipTest('CPP_GTEST parameter is not set')
for service, test_program in env.get_param('CPP_GTEST').items():
for test in cls.find_testcases(test_program):
yield cls.gtest, service, test_program, test

def gtest(self, service, test):
args = [ self.test_program, '--gtest_filter=%s' % test ]
def gtest(self, service, test_program, test):
self.lazySetUp(service)
args = [ test_program, '--gtest_filter=%s' % test ]
env = { 'JUBATUS_HOST': self.client_node.get_host(),
'JUBATUS_PORT': str(self.target.get_host_port()[1]),
'JUBATUS_CLUSTER_NAME': self.name }
Expand All @@ -62,46 +66,25 @@ def gtest(self, service, test):
# Report gtest result when error occured
self.assertEqual(0, returncode, proc.stdout)


class ClientStandaloneTest(JubaTestCase, ClientGoogleTestBase):
@classmethod
def setUpCluster(cls, env):
cls.env = env
if not cls.service:
raise JubaSkipTest('CPP_GTEST parameter is not set')

if not cls.test_program:
raise JubaSkipTest('CPP_GTEST parameter is not set')

cls.server1 = env.server_standalone(env.get_node(0), cls.service, default_config(cls.service))
cls.target = cls.server1
cls.name = ''
cls.client_node = env.get_node(0)

def setUp(self):
def lazySetUp(self, service):
self.server1 = self.env.server_standalone(self.env.get_node(0), service, default_config(service))
self.target = self.server1
self.name = ''
self.client_node = self.env.get_node(0)
self.server1.start()

def tearDown(self):
self.server1.stop()

class ClientDistributedTest(JubaTestCase, ClientGoogleTestBase):
@classmethod
def setUpCluster(cls, env):
cls.env = env
if not cls.service:
raise JubaSkipTest('CPP_GTEST parameter is not set')

if not cls.test_program:
raise JubaSkipTest('CPP_GTEST parameter is not set')

cls.node0 = env.get_node(0)
cls.cluster = env.cluster(cls.service, default_config(cls.service))
cls.name = cls.cluster.name

def setUp(self):
def lazySetUp(self, service):
self.node0 = self.env.get_node(0)
self.cluster = self.env.cluster(service, default_config(service))
self.name = self.cluster.name
self.server1 = self.env.server(self.node0, self.cluster)
self.server2 = self.env.server(self.node0, self.cluster)
self.keeper1 = self.env.keeper(self.node0, self.service)
self.keeper1 = self.env.keeper(self.node0, service)
self.target = self.keeper1
self.client_node = self.env.get_node(0)
for server in [self.keeper1, self.server1, self.server2]:
Expand Down
Loading

0 comments on commit cc95289

Please sign in to comment.