mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-09-03 20:21:41 +00:00
82 lines
1.9 KiB
Python
82 lines
1.9 KiB
Python
#! /usr/bin/env python
|
|
# coding = utf-8
|
|
|
|
import uwsgi
|
|
import unittest
|
|
import os
|
|
import fcntl
|
|
from shutil import rmtree
|
|
import time
|
|
from signal import signal, SIGINT
|
|
import spooler_priority_constants
|
|
|
|
|
|
def spoolersTaskList():
|
|
# Get the list of tasks
|
|
tasks = [
|
|
os.path.join(s, fn)
|
|
for s in uwsgi.spoolers
|
|
for fn in os.listdir(s)
|
|
]
|
|
|
|
for t in tasks[:]:
|
|
if os.path.isdir(t):
|
|
tasks += [os.path.join(t, fn) for fn in os.listdir(t)]
|
|
tasks.remove(t)
|
|
|
|
return tasks
|
|
|
|
|
|
def is_locked(filepath):
|
|
# Check if file is locked
|
|
with open(filepath, "a+") as f:
|
|
try:
|
|
fcntl.lockf(f.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
is_locked = False
|
|
except IOError:
|
|
is_locked = True
|
|
return is_locked
|
|
|
|
|
|
def lockedTasks(tasklist):
|
|
# List of locked tasks
|
|
return [fp for fp in spoolersTaskList() if is_locked(fp)]
|
|
|
|
|
|
def taskParameters(filepath):
|
|
# Retrieve parameters
|
|
return uwsgi.parsefile(filepath)
|
|
|
|
|
|
def cleanTasks():
|
|
# Clean any remaining task
|
|
for s in uwsgi.spoolers:
|
|
for f in os.listdir(s):
|
|
path = os.path.join(s, f)
|
|
if os.path.isdir(path):
|
|
rmtree(os.path.join(s, f))
|
|
else:
|
|
os.remove(path)
|
|
|
|
|
|
class BitmapTest(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
for priority, name in spooler_priority_constants.tasks:
|
|
task = {'name': name, 'at': int(time.time() + 10)}
|
|
if priority is not None:
|
|
task['priority'] = str(priority)
|
|
uwsgi.spool(task)
|
|
|
|
def test_priority(self):
|
|
uwsgi.signal_wait(17)
|
|
print("Signal received.")
|
|
|
|
with open(spooler_priority_constants.LOGFILE, "r") as log:
|
|
# Check logging ordering.
|
|
loglines = [line.rstrip() for line in log]
|
|
self.assertEqual(loglines, spooler_priority_constants.ordered_tasks)
|
|
|
|
signal(SIGINT, cleanTasks)
|
|
unittest.main()
|