Skip to content

Commit ab36da4

Browse files
committed
Performance Cluster Management
Confirmed cluster process is wired in correctly for CLI. Also found latent bug in data_store. Forgot to include the data_store_port variable. Have included now in all connection strings. Closes #11
1 parent e02e05b commit ab36da4

File tree

6 files changed

+116
-13
lines changed

6 files changed

+116
-13
lines changed

dbscripts/mysql_process_tracker.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,10 @@ create table process_tracker.cluster_tracking
277277
cluster_id int auto_increment
278278
primary key,
279279
cluster_name varchar(250) not null,
280-
cluster_max_memory int not null,
280+
cluster_max_memory int null,
281281
cluster_max_memory_unit char(2) null,
282-
cluster_max_processing int not null,
283-
cluster_max_processing_unit varchar(3) not null,
282+
cluster_max_processing int null,
283+
cluster_max_processing_unit varchar(3) null,
284284
cluster_current_memory_usage int null,
285285
cluster_current_process_usage int null,
286286
constraint cluster_tracking_cluster_name_uindex

dbscripts/postgresql_process_tracker.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,10 @@ create table cluster_tracking
423423
constraint cluster_tracking_pk
424424
primary key,
425425
cluster_name varchar(250) not null,
426-
cluster_max_memory integer not null,
427-
cluster_max_memory_unit char(2) not null,
428-
cluster_max_processing integer not null,
429-
cluster_max_processing_unit varchar(3) not null,
426+
cluster_max_memory integer null,
427+
cluster_max_memory_unit char(2) null,
428+
cluster_max_processing integer null,
429+
cluster_max_processing_unit varchar(3) null,
430430
cluster_current_memory_usage integer,
431431
cluster_current_process_usage integer
432432
);

process_tracker/data_store.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,7 @@ def topic_validator(self, topic):
571571
valid_topics = [
572572
"actor",
573573
"cluster",
574+
"cluster process",
574575
"error type",
575576
"extract status",
576577
"process dependency",
@@ -656,6 +657,8 @@ def verify_and_connect_to_data_store(self):
656657
+ data_store_password
657658
+ "@"
658659
+ data_store_host
660+
+ ":"
661+
+ data_store_port
659662
+ "/"
660663
+ data_store_name
661664
)
@@ -669,6 +672,8 @@ def verify_and_connect_to_data_store(self):
669672
+ data_store_password
670673
+ "@"
671674
+ data_store_host
675+
+ ":"
676+
+ data_store_port
672677
+ "/"
673678
+ data_store_name
674679
)
@@ -681,6 +686,8 @@ def verify_and_connect_to_data_store(self):
681686
+ data_store_password
682687
+ "@"
683688
+ data_store_host
689+
+ ":"
690+
+ data_store_port
684691
+ "/"
685692
+ data_store_name
686693
)

process_tracker/models/capacity.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ class Cluster(Base):
1919
primary_key=True,
2020
)
2121
cluster_name = Column(String(250), unique=True, nullable=False)
22-
cluster_max_memory = Column(Integer, nullable=False)
23-
cluster_max_memory_unit = Column(String(2), nullable=False)
24-
cluster_max_processing = Column(Integer, nullable=False)
25-
cluster_max_processing_unit = Column(String(3), nullable=False)
22+
cluster_max_memory = Column(Integer, nullable=True)
23+
cluster_max_memory_unit = Column(String(2), nullable=True)
24+
cluster_max_processing = Column(Integer, nullable=True)
25+
cluster_max_processing_unit = Column(String(3), nullable=True)
2626
cluster_current_memory_usage = Column(Integer)
2727
cluster_current_process_usage = Column(Integer)
2828

@@ -50,7 +50,7 @@ class ClusterProcess(Base):
5050

5151
def __repr__(self):
5252

53-
return (
54-
"<ClusterProcess (cluster_id=%s, process_id=%s)" % self.cluster_id,
53+
return "<ClusterProcess (cluster_id=%s, process_id=%s)" % (
54+
self.cluster_id,
5555
self.process_id,
5656
)

tests/test_cli.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from process_tracker.models.extract import ExtractStatus
1717
from process_tracker.models.process import (
1818
ErrorType,
19+
Process,
1920
ProcessDependency,
2021
ProcessStatus,
2122
ProcessType,
@@ -128,6 +129,54 @@ def test_create_cluster(self):
128129

129130
self.assertEqual("Test Cluster", given_name)
130131

132+
def test_create_cluster_process(self):
133+
"""
134+
Testing that when creating a cluster process relationship record, it is added.
135+
:return:
136+
"""
137+
cluster = self.data_store.get_or_create_item(
138+
model=Cluster, cluster_name="Test Cluster"
139+
)
140+
141+
process = self.data_store.get_or_create_item(
142+
model=Process, process_name="Test Cluster Process"
143+
)
144+
145+
result = self.runner.invoke(
146+
main,
147+
'create -t "cluster process" --cluster "%s" --child "%s"'
148+
% (cluster.cluster_name, process.process_name),
149+
)
150+
151+
instance = (
152+
self.session.query(ClusterProcess)
153+
.filter(ClusterProcess.cluster_id == cluster.cluster_id)
154+
.filter(ClusterProcess.process_id == process.process_id)
155+
.first()
156+
)
157+
158+
given_result = [instance.cluster_id, instance.process_id]
159+
expected_result = [cluster.cluster_id, process.process_id]
160+
161+
self.runner.invoke(
162+
main,
163+
[
164+
"delete",
165+
"-t",
166+
"cluster process",
167+
"--cluster",
168+
"Test Cluster",
169+
"-c",
170+
"Test Cluster Process",
171+
],
172+
)
173+
self.runner.invoke(main, ["delete", "-t", "cluster", "-n", "Test Cluster"])
174+
self.runner.invoke(
175+
main, ["delete", "-t", "process", "-n", "Test Cluster Process"]
176+
)
177+
178+
self.assertEqual(expected_result, given_result)
179+
131180
def test_create_extract_status(self):
132181
"""
133182
Testing that when creating an extract status record it is added.
@@ -356,6 +405,51 @@ def test_delete_cluster(self):
356405
self.assertEqual(None, instance)
357406
self.assertEqual(0, result.exit_code)
358407

408+
def test_create_cluster_process(self):
409+
"""
410+
Testing that when creating a cluster process relationship record, it is added.
411+
:return:
412+
"""
413+
cluster = self.data_store.get_or_create_item(
414+
model=Cluster, cluster_name="Test Cluster"
415+
)
416+
417+
process = self.data_store.get_or_create_item(
418+
model=Process, process_name="Test Cluster Process"
419+
)
420+
421+
result = self.runner.invoke(
422+
main,
423+
'create -t "cluster process" --cluster "%s" --child "%s"'
424+
% (cluster.cluster_name, process.process_name),
425+
)
426+
427+
self.runner.invoke(
428+
main,
429+
[
430+
"delete",
431+
"-t",
432+
"cluster process",
433+
"--cluster",
434+
"Test Cluster",
435+
"-c",
436+
"Test Cluster Process",
437+
],
438+
)
439+
self.runner.invoke(main, ["delete", "-t", "cluster", "-n", "Test Cluster"])
440+
self.runner.invoke(
441+
main, ["delete", "-t", "process", "-n", "Test Cluster Process"]
442+
)
443+
444+
instance = (
445+
self.session.query(ClusterProcess)
446+
.filter(ClusterProcess.cluster_id == cluster.cluster_id)
447+
.filter(ClusterProcess.process_id == process.process_id)
448+
.first()
449+
)
450+
451+
self.assertEqual(None, instance)
452+
359453
def test_delete_extract_status(self):
360454
"""
361455
Testing that when deleting an extract status record not on the protected list, it is deleted.

tests/test_extract_tracker.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from datetime import datetime, timedelta
33
import unittest
44

5+
from process_tracker.models.capacity import ClusterProcess
56
from process_tracker.models.extract import Extract, ExtractProcess, Location
67
from process_tracker.models.process import (
78
Process,
@@ -37,6 +38,7 @@ def setUpClass(cls):
3738

3839
@classmethod
3940
def tearDownClass(cls):
41+
cls.session.query(ClusterProcess).delete()
4042
cls.session.query(ErrorTracking).delete()
4143
cls.session.query(ExtractProcess).delete()
4244
cls.session.query(ProcessTracking).delete()

0 commit comments

Comments
 (0)