Commit Graph

558 Commits

Author SHA1 Message Date
Max Romanov af964488ba Tests: changing Python application callable name. 2020-09-21 10:32:14 +03:00
hongzhidao 806135f1c9 Router: fixed "pass" to upstreams.
Messed up return values in nxt_upstream_find() caused error in applying any
configuration with a valid "pass" value in router configuration pointing to
upstream.  That wasn't the case in "listeners" objects, where the return value
wasn't checked.

Also, it caused segfault in cases where the "pass" option was configured with
variables and resulting value was pointing to a non-existent upstream.

Added missing return checks as well to catch possible memory allocation errors.

The bug was introduced in d32bc428f46b.

This closes #472 issue on GitHub.
2020-08-28 00:53:36 -04:00
Andrei Zeliankou d5e9159340 Tests: migrated to the pytest. 2020-09-16 21:31:15 +01:00
Andrei Zeliankou df374057f7 Tests: $host varaible test.
Also added few tests for $uri and minor style fixes.
2020-08-31 03:14:02 +01:00
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