Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit08eb0f4

Browse files
committed
Fix update checking script
1 parentadf5fd7 commit08eb0f4

File tree

1 file changed

+36
-63
lines changed

1 file changed

+36
-63
lines changed

‎tests/update/check_update.py

Lines changed: 36 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env python
22
#coding: utf-8
33

4+
importshutil
45
importos
56
importcontextlib
67
importsys
@@ -9,7 +10,9 @@
910
importsubprocess
1011
importdifflib
1112

12-
repo_dir=os.path.abspath(os.path.join('../..',os.path.dirname(__file__)))
13+
my_dir=os.path.dirname(os.path.abspath(__file__))
14+
repo_dir=os.path.abspath(os.path.join(my_dir,'../../'))
15+
print(repo_dir)
1316

1417
compilation='''
1518
make USE_PGXS=1 clean
@@ -31,7 +34,7 @@
3134
3235
CREATE TABLE range_rel (
3336
idSERIAL PRIMARY KEY,
34-
dtTIMESTAMP,
37+
dtTIMESTAMP not null,
3538
txtTEXT);
3639
CREATE INDEX ON range_rel (dt);
3740
INSERT INTO range_rel (dt, txt)
@@ -49,7 +52,7 @@
4952
INSERT INTO improved_dummy_test1 (name) SELECT md5(g::TEXT) FROM generate_series(1, 100) as g;
5053
SELECT create_range_partitions('improved_dummy_test1', 'id', 1, 10);
5154
INSERT INTO improved_dummy_test1 (name) VALUES ('test'); /* spawns new partition */
52-
ALTER TABLEimproved_dummy_1 ADD CHECK (name != 'ib'); /* make improved_dummy_1 disappear */
55+
ALTER TABLEimproved_dummy_test1 ADD CHECK (name != 'ib');
5356
5457
CREATE TABLE test_improved_dummy_test2 (val INT NOT NULL);
5558
SELECT create_range_partitions('test_improved_dummy_test2', 'val',
@@ -61,7 +64,7 @@
6164
SELECT create_range_partitions('insert_into_select', 'val', 1, 20);
6265
CREATE TABLE insert_into_select_copy (LIKE insert_into_select); /* INSERT INTO ... SELECT ... */
6366
64-
# just a lot of actions
67+
-- just a lot of actions
6568
6669
SELECT split_range_partition('num_range_rel_1', 500);
6770
SELECT split_range_partition('range_rel_1', '2015-01-15'::DATE);
@@ -81,48 +84,13 @@
8184
SELECT append_range_partition('range_rel');
8285
SELECT prepend_range_partition('range_rel');
8386
SELECT drop_range_partition('range_rel_7');
84-
SELECT add_range_partition('range_rel', '2014-12-01'::DATE, '2015-01-02'::DATE);
8587
SELECT add_range_partition('range_rel', '2014-12-01'::DATE, '2015-01-01'::DATE);
8688
87-
CREATE TABLE range_rel_archive (LIKE range_rel INCLUDING ALL);
88-
SELECT attach_range_partition('range_rel', 'range_rel_archive', '2014-01-01'::DATE, '2015-01-01'::DATE);
89-
SELECT attach_range_partition('range_rel', 'range_rel_archive', '2014-01-01'::DATE, '2014-12-01'::DATE);
90-
SELECT detach_range_partition('range_rel_archive');
91-
92-
CREATE TABLE range_rel_test1 (
93-
id SERIAL PRIMARY KEY,
94-
dt TIMESTAMP,
95-
txt TEXT,
96-
abc INTEGER);
97-
SELECT attach_range_partition('range_rel', 'range_rel_test1', '2013-01-01'::DATE, '2014-01-01'::DATE);
98-
CREATE TABLE range_rel_test2 (
99-
id SERIAL PRIMARY KEY,
100-
dt TIMESTAMP);
101-
SELECT attach_range_partition('range_rel', 'range_rel_test2', '2013-01-01'::DATE, '2014-01-01'::DATE);
102-
103-
/* Half open ranges */
104-
SELECT add_range_partition('range_rel', NULL, '2014-12-01'::DATE, 'range_rel_minus_infinity');
105-
SELECT add_range_partition('range_rel', '2015-06-01'::DATE, NULL, 'range_rel_plus_infinity');
106-
SELECT append_range_partition('range_rel');
107-
SELECT prepend_range_partition('range_rel');
108-
10989
CREATE TABLE range_rel_minus_infinity (LIKE range_rel INCLUDING ALL);
11090
SELECT attach_range_partition('range_rel', 'range_rel_minus_infinity', NULL, '2014-12-01'::DATE);
11191
INSERT INTO range_rel (dt) VALUES ('2012-06-15');
11292
INSERT INTO range_rel (dt) VALUES ('2015-12-15');
11393
114-
CREATE TABLE zero(
115-
idSERIAL PRIMARY KEY,
116-
valueINT NOT NULL);
117-
INSERT INTO zero SELECT g, g FROM generate_series(1, 100) as g;
118-
SELECT create_range_partitions('zero', 'value', 50, 10, 0);
119-
SELECT append_range_partition('zero', 'zero_0');
120-
SELECT prepend_range_partition('zero', 'zero_1');
121-
SELECT add_range_partition('zero', 50, 70, 'zero_50');
122-
SELECT append_range_partition('zero', 'zero_appended');
123-
SELECT prepend_range_partition('zero', 'zero_prepended');
124-
SELECT split_range_partition('zero_50', 60, 'zero_60');
125-
12694
CREATE TABLE hash_rel_extern (LIKE hash_rel INCLUDING ALL);
12795
SELECT replace_hash_partition('hash_rel_0', 'hash_rel_extern');
12896
@@ -140,7 +108,6 @@
140108
141109
/* CaMeL cAsE table names and attributes */
142110
CREATE TABLE "TeSt" (a INT NOT NULL, b INT);
143-
SELECT create_hash_partitions('TeSt', 'a', 3);
144111
SELECT create_hash_partitions('"TeSt"', 'a', 3);
145112
INSERT INTO "TeSt" VALUES (1, 1);
146113
INSERT INTO "TeSt" VALUES (2, 2);
@@ -163,17 +130,6 @@
163130
valueINTEGER NOT NULL);
164131
INSERT INTO hash_rel_next1 (value) SELECT g FROM generate_series(1, 10000) as g;
165132
SELECT create_hash_partitions('hash_rel_next1', 'value', 3);
166-
167-
CREATE TABLE range_rel_next1 (
168-
idSERIAL PRIMARY KEY,
169-
dtTIMESTAMP NOT NULL,
170-
valueINTEGER);
171-
INSERT INTO range_rel_next1 (dt, value) SELECT g, extract(day from g) FROM generate_series('2010-01-01'::date, '2010-12-31'::date, '1 day') as g;
172-
SELECT create_range_partitions('range_rel_next1', 'dt', '2010-01-01'::date, '1 month'::interval, 12);
173-
SELECT merge_range_partitions('range_rel_1', 'range_rel_2');
174-
SELECT split_range_partition('range_rel_1', '2010-02-15'::date);
175-
SELECT append_range_partition('range_rel_next1');
176-
SELECT prepend_range_partition('range_rel_next1');
177133
'''
178134

179135
@contextlib.contextmanager
@@ -188,6 +144,10 @@ def cwd(path):
188144
print("cwd:",curdir)
189145
os.chdir(curdir)
190146

147+
defshell(cmd):
148+
print(cmd)
149+
subprocess.check_output(cmd,shell=True)
150+
191151
dump1_file='/tmp/dump1.sql'
192152
dump2_file='/tmp/dump2.sql'
193153

@@ -198,12 +158,17 @@ def cwd(path):
198158

199159
args=parser.parse_args()
200160

201-
withopen('dump_pathman_objects.sql')asf:
161+
withopen(os.path.join(my_dir,'dump_pathman_objects.sql'),'r')asf:
202162
dump_sql=f.read()
203163

204-
withcwd(repo_dir):
205-
subprocess.check_output("git checkout %s"%args.branches[0],shell=True)
206-
subprocess.check_output(compilation,shell=True)
164+
shutil.rmtree('/tmp/pg_pathman')
165+
shutil.copytree(repo_dir,'/tmp/pg_pathman')
166+
167+
withcwd('/tmp/pg_pathman'):
168+
shell("git clean -fdx")
169+
shell("git reset --hard")
170+
shell("git checkout %s"%args.branches[0])
171+
shell(compilation)
207172

208173
withtestgres.get_new_node('updated')asnode:
209174
node.init()
@@ -214,22 +179,24 @@ def cwd(path):
214179
node.dump(dump1_file,'postgres')
215180
node.stop()
216181

217-
subprocess.check_output("git checkout %s"%args.branches[1],shell=True)
218-
subprocess.check_output(compilation,shell=True)
182+
shell("git clean -fdx")
183+
shell("git checkout %s"%args.branches[1])
184+
shell(compilation)
219185

220186
version=None
221187
withopen('pg_pathman.control')asf:
222188
forlineinf.readlines():
223189
ifline.startswith('default_version'):
224-
version=line.split('=').strip()
190+
version=line.split('=')[1].strip()
225191

226192
ifversionisNone:
227193
print("cound not find version in second branch")
228194
exit(1)
229195

230196
node.start()
231-
node.safe_psql("postgres","alter extension pg_pathman update to %s"%version)
232-
dumped_objects_old=node.safe_psql("postgres",dump_sql)
197+
p=subprocess.Popen(["psql","postgres"],stdin=subprocess.PIPE,
198+
stdout=subprocess.PIPE)
199+
dumped_objects_old=p.communicate(input=dump_sql.encode())[0].decode()
233200
node.stop()
234201

235202
# now make clean install
@@ -238,7 +205,9 @@ def cwd(path):
238205
node.append_conf("shared_preload_libraries='pg_pathman'\n")
239206
node.start()
240207
node.safe_psql('postgres',run_sql)
241-
dumped_objects_new=node.safe_psql("postgres",dump_sql)
208+
p=subprocess.Popen(["psql","postgres"],stdin=subprocess.PIPE,
209+
stdout=subprocess.PIPE)
210+
dumped_objects_new=p.communicate(input=dump_sql.encode())[0].decode()
242211
node.dump(dump2_file,'postgres')
243212

244213
# check dumps
@@ -249,5 +218,9 @@ def cwd(path):
249218
node.restore(dump2_file,'d2')
250219
node.stop()
251220

252-
ifdumped_objects!=dumped_objects_new:
253-
pass
221+
ifdumped_objects_old!=dumped_objects_new:
222+
print("\nDIFF:")
223+
forlineindifflib.context_diff(dumped_objects_old.split('\n'),dumped_objects_new.split('\n')):
224+
print(line)
225+
else:
226+
print("\nUPDATE CHECK: ALL GOOD")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp