Commit Graph

554 Commits

Author SHA1 Message Date
Tiago Natel de Moura
d1bdaf98ba Tests: disable of language_deps. 2020-08-25 15:27:51 +01:00
Tiago Natel de Moura
244ffb2829 Tests: PHP extension mounts. 2020-08-25 13:48:33 +01:00
Tiago Natel de Moura
10738c3fe2 Tests: default tmpfs in rootfs. 2020-08-20 15:53:20 +01:00
Tiago Natel de Moura
479fdff39d Tests: set root by unprivilaged user. 2020-08-13 12:17:15 +01:00
Andrei Zeliankou
8032686a57 Tests: added test with error on loading application. 2020-08-13 13:17:27 +01:00
Andrei Zeliankou
c40e45344f Tests: added variables tests. 2020-08-13 13:17:01 +01:00
Max Romanov
496f41c134 Tests: reducing the number of generated applications.
Each application initializes a shared port with 2 file descriptors, so the test
fails because the router reaches the open files limit.
2020-08-11 19:20:25 +03:00
Max Romanov
bab4a9e9f2 Tests: skipping idle zero timeout.
This is a temporary solution after the 'shared port' patch.  The application
process becomes idle immediately after creation.  Even if it starts processing
a request (without acknowledging it yet), it is stopped by the router because
an 'out-of-idle-time' event occurs.
2020-08-11 19:20:23 +03:00
Andrei Zeliankou
f1e445bdef Tests: added PHP test with time check in error log messages. 2020-07-28 04:53:40 +01:00
Andrei Zeliankou
355ed9697d Tests: fixed double stop() call for some tests. 2020-07-28 04:53:32 +01:00
Andrei Zeliankou
dc1377dc48 Tests: style. 2020-07-28 03:09:50 +01:00
Max Romanov
661c223eda Tests: switching stdout to blocking before printing log.
This is another attempt to fix the following error message:
BlockingIOError: [Errno 11] write could not complete without blocking
2020-07-22 10:05:10 +03:00
Axel Duch
b6792b00ae Router: route patterns multi wildcards fix.
Matching 'start' and 'end' position now adjusted to avoid false matching.

This is related to #434 issue on Github.
Thanks to 洪志道 (Hong Zhi Dao).
2020-07-10 10:28:53 +01:00
Axel Duch
a9a21f6fe4 Router: route patterns multi wildcards support. 2020-07-04 03:24:07 +01:00
Andrei Zeliankou
9bd6baefae Tests: fixed opcache detection.
opcache_get_status() returns array, so square brackets
should be used to access "opcache_enabled" value.
2020-06-26 04:23:47 +01:00
Andrei Zeliankou
6e55f03dcd Tests: added chunked tests. 2020-06-24 04:11:09 +01:00
Tiago Natel de Moura
08b765ae42 Tests: Added rootfs tests. 2020-05-28 14:59:52 +01:00
Tiago Natel de Moura
e9e5ddd5a5 Refactor of process management.
The process abstraction has changed to:

  setup(task, process)
  start(task, process_data)
  prefork(task, process, mp)

The prefork() occurs in the main process right before fork.

The file src/nxt_main_process.c is completely free of process
specific logic.

The creation of a process now supports a PROCESS_CREATED state.  The
The setup() function of each process can set its state to either
created or ready.  If created, a MSG_PROCESS_CREATED is sent to main
process, where external setup can be done (required for rootfs under
container).

The core processes (discovery, controller and router) doesn't need
external setup, then they all proceeds to their start() function
straight away.

In the case of applications, the load of the module happens at the
process setup() time and The module's init() function has changed
to be the start() of the process.

The module API has changed to:

  setup(task, process, conf)
  start(task, data)

As a direct benefit of the PROCESS_CREATED message, the clone(2) of
processes using pid namespaces now doesn't need to create a pipe
to make the child block until parent setup uid/gid mappings nor it
needs to receive the child pid.
2020-03-09 16:28:25 +00:00
Andrei Zeliankou
fa4d4b6120 Tests: print unit.log in case of errors.
Thanks to hongzhidao.
2020-05-20 23:06:56 +01:00
Andrei Zeliankou
82471c1dd3 Tests: added tests for "targets" option. 2020-05-15 04:21:25 +01:00
Andrei Zeliankou
ea841400f5 Tests: added test for encoding in the "pass" option. 2020-05-15 04:21:10 +01:00
Andrei Zeliankou
ce4a2bbd05 Tests: style. 2020-05-15 04:20:56 +01:00
Andrei Zeliankou
cf73fb8093 Tests: test_proxy_invalid simplified. 2020-05-15 04:20:45 +01:00
Axel Duch
26f407e24a Tests: decode uri and args. 2020-05-14 12:29:22 +02:00
Valentin Bartenev
0174c971b5 Configuration: URI encoding in the "pass" option.
This is useful to escape "/" in path fragments.  For example, in order
to reference the application named "foo/bar":

  {
      "pass": "applications/foo%2Fbar"
  }
2020-05-14 13:15:00 +03:00
Andrei Zeliankou
d803ec39bc Tests: added respawn tests. 2020-05-12 17:59:47 +01:00
Andrei Zeliankou
6a9a4fe0d4 Tests: introduced module version specification in prerequisites. 2020-04-24 05:08:56 +01:00
Andrei Zeliankou
8f6e6086cb Tests: skips adjusted. 2020-04-20 14:04:55 +01:00
Andrei Zeliankou
3c58a4bfc1 Tests: added test with rescheduling requests. 2020-04-14 03:02:16 +01:00
Andrei Zeliankou
0bfa09dfa0 Tests: minor fixes and style. 2020-04-14 02:35:04 +01:00
Valentin Bartenev
c7f5c1c664 Controller: improved handling of unix domain control socket.
One of the ways to detect Unit's startup and subsequent readiness to accept
commands relies on waiting for the control socket file to be created.
Earlier, it was unreliable due to a race condition between the client's
connect() and the daemon's listen() calls after the socket's bind() call.

Now, unix domain listening sockets are created with a nxt_listen_socket_create()
call as follows:

   s = socket();
   unlink("path/to/socket.tmp")
   bind(s, "path/to/socket.tmp");
   listen(s);
   rename("path/to/socket.tmp", "path/to/socket");

This eliminates a time-lapse when the socket file is already created but nobody
is listening on it yet, which therefore prevents the condition described above.

Also, it allows reliably detecting whether the socket is being used or simply
wasn't cleaned after the daemon stopped abruptly.  A successful connection to
the socket file means the daemon has been started; otherwise, the file can be
overwritten.
2020-04-08 15:15:24 +03:00
Andrei Zeliankou
a49023229e Tests: use "return" action in upstream tests. 2020-04-03 01:49:18 +01:00
Andrei Zeliankou
d7aa514d6a Tests: added notification on "read_timeout" expiration. 2020-04-03 01:46:59 +01:00
Andrei Zeliankou
2bb8b3d88a Tests: minor fixes. 2020-04-03 01:03:26 +01:00
Andrei Zeliankou
5954839773 Tests: added tests for rational numbers in upstream server weight. 2020-03-30 18:44:50 +01:00
Max Romanov
0935630cba Fixing application process infinite loop.
Main process exiting before app process init may have caused hanging.
2020-03-30 14:18:51 +03:00
Max Romanov
ab7b42a072 Handling change file message in libunit.
This is required for proper log file rotation action.
2020-03-30 14:18:41 +03:00
Andrei Zeliankou
f94e31b294 Tests: added tests for "location" option. 2020-03-27 17:29:45 +00:00
Andrei Zeliankou
6e5b5d2a0b Tests: added tests for "return" action. 2020-03-27 15:50:09 +00:00
Andrei Zeliankou
5f2d07019c Tests: increase default "read_timeout" to 60s in message_read(). 2020-03-27 15:48:39 +00:00
Andrei Zeliankou
8532cf6ae6 Tests: added tests for comments in JSON. 2020-03-25 19:40:08 +00:00
Andrei Zeliankou
2e4ad9fbc0 Tests: UTF-8 BOM test. 2020-03-25 19:31:42 +00:00
Andrei Zeliankou
48ad88ee72 Tests: increase default "read_timeout" value to 60s.
This change is necessary to avoid errors on slow hosts.

Also slightly reworked argument passing to the recvall() function.
2020-03-23 19:18:26 +00:00
Andrei Zeliankou
ac9ca6d75c Tests: added notification on unsuccessful connect(). 2020-03-23 19:12:22 +00:00
Andrei Zeliankou
b0161df42e Tests: wait for unit.pid file before running tests.
Waiting for control.unit.sock was replaced by unit.pid due to current problem
with race between connect() and listen() calls for control.unit.sock.

This change should be reverted after fix.
2020-03-23 19:09:29 +00:00
Andrei Zeliankou
3fd4b4cfab Tests: rearranging functions in main.py. 2020-03-23 02:13:46 +00:00
Andrei Zeliankou
c7cc247baa Tests: terminate unitd process on exit(). 2020-03-23 02:12:44 +00:00
Andrei Zeliankou
93207d4a8c Tests: test_python_procman.py refactored. 2020-03-19 03:17:00 +00:00
Andrei Zeliankou
06c790ac1e Tests: fixed prerequisite in test_share_fallback.py. 2020-03-19 03:15:50 +00:00
Max Romanov
c6f9ca79e6 Fixing body fd access racing condition.
To avoid closing the body fd prematurely, the fd value is moved from
the request struct to the app link.  The body fd should not be closed
immediately after the request is sent to the application due to possible
request rescheduling.
2020-03-17 14:44:11 +03:00