Skip to content
Snippets Groups Projects
  1. Jul 19, 2019
    • George Joseph's avatar
      CI: Add cleanWs to cleanup steps in jenkinsfiles · be8d41bd
      George Joseph authored
      We're at the point where there are enough Jenkins jobs for
      Asterisk branches than even cleaned checkouts of Asterisk
      will add up to more disk space than is available on the
      in-memory workspace mount.  Since we archive all relevent
      artifacts anyway, there's no need to keep the workspace
      around after the job finishes, whether it succeeds or fails.
      
      Change-Id: I1cd3b73ebb045a987df0f62526d152a510210c39
      be8d41bd
    • George Joseph's avatar
      CI: Add install-headers to the install make targets · 8b88994b
      George Joseph authored
      The testsuite actually needs the headers installed to run
      it's self_test.
      
      Change-Id: Ice41d331131b876ad4a9c056085fe6aac34b32b2
      8b88994b
  2. Jul 08, 2019
    • Kevin Harwell's avatar
      mwi: Update the MWI core to use stasis_state API · b31ac839
      Kevin Harwell authored
      ** Note **
      
      This patch is meant to be the minimum needed in order for the MWI core to use
      the now underlying stasis_state module. As such it does not completely remove
      its reliance on the stasis_cache. Doing so has allowed current consumers to
      not have to change, and update those code paths for this patch. When time
      allows, subsequent patches can/will be made to those consumers to take advantage
      of some of the new MWI API included here. Thus, eventually and ultimately
      removing MWI dependency on the stasis_cache.
      
      ** End Note **
      
      This patch makes it so the MWI core now takes advantage of the new stasis_state
      API. Consumers of MWI should no longer need to depend upon stasis topic pooling,
      and the stasis cache directly. Similar functionality and implementation details
      have now been pushed into the stasis_state module. However, all MWI state should
      be accessed via the MWI API itself.
      
      As such a few new methods, and constructs have been added to the MWI core that
      facilitate consumer publishing, subscribing, and iterating over MWI state data.
      
      * ast_mwi_subscriber *
      
      Created via ast_mwi_add_subscriber, a subscriber subscribes to a given mailbox
      in order to receive updates about the given mailbox. Adding a subscriber will
      create the underlying topic, and associated state data if those do not already
      exist for it. The topic, and last known state data is guaranteed to exist for
      the lifetime of the subscriber.
      
      * ast_mwi_publisher *
      
      Before publishing to a particular topic a publisher should be created. This can
      be achieved by using ast_mwi_add_publisher. Publishing to a mailbox should then
      be done using one of the MWI publish functions. This ensures the message is
      published to the appropriate topic, and the last known state is maintained.
      
      * ast_mwi_observer *
      
      Add an observer in order to watch for particular MWI module related events. For
      instance if a submodule needs to know when a subscription is added to any
      mailbox an observer can be added to watch for that.
      
      * other *
      
      Urgent message count is now part of the published MWI state object. Also state
      can be iterated over using defined callbacks.
      
      ASTERISK-28442
      
      Change-Id: I93f935f9090cd5ddff6d4bc80ff90703c05cf776
      b31ac839
  3. Jun 28, 2019
    • Kevin Harwell's avatar
      stasis_state: Add new stasis_state module · 363bafc2
      Kevin Harwell authored
      This new module describes an API that can be thought of as a combination of
      stasis topic pools, and caching. Except, hopefully done in a more efficient
      and less memory "leaky" manner.
      
      The API defines methods, and data structures for managing, and tracking
      published message state through stasis. By adding a subscriber or publisher,
      consumers can more easily track the lifetime of the contained state. For
      instance, when no more publishers and/or subscribers have need of the topic,
      and associated state its data is removed from the managed container.
      
      * stasis_state_manager *
      
      The manager stores and well, manages state data. Each state is an association
      of a unique stasis topic, and the last known published stasis message on that
      topic. There is only ever one managed state object per topic. For each topic
      all messages are forwarded to an "all" topic also maintained by the manager.
      
      * stasis_state_subscriber *
      
      Topic and state can be created, or referenced within the manager by adding a
      stasis_state_subscriber. When adding a subscriber if no state currently exists
      new managed state is immediately created. If managed state already exists then
      a new subscriber is created referencing that state. The managed state is
      guaranteed to live throughout the subscriber's lifetime. State is only removed
      from the manager when no other entities require it.
      
      * stasis_state_publisher *
      
      Topic and state can be created, or referenced within the manager by also adding
      a stasis_state_publisher. When adding a publisher if no state currently exists
      new managed state is created. If managed state already exists then a new
      publisher is created referencing that state. The managed state is guaranteed to
      live throughout the publisher's lifetime. State is only removed from the
      manager when no other entities require it.
      
      * stasis_state_observer *
      
      Some modules may wish to watch for, and react to managed state events. By
      registering a state observer, and implementing handlers for the desired
      callbacks those modules can do so.
      
      * other *
      
      Callbacks also exist that allow consumers to iterate over all, or some of the
      managed state.
      
      ASTERISK-28442
      
      Change-Id: I7a4a06685a96e511da9f5bd23f9601642d7bd8e5
      363bafc2
  4. Jun 19, 2019
    • George Joseph's avatar
      CI: New way to determnine libdir · 0ba52ce3
      George Joseph authored
      We were using the presence of /usr/lib64 to determine where
      shared libraries should be installed.  This only existed on
      Redhat based systems and was safe.  If it existed, use it,
      otherwise use /usr/lib.
      
      Unfortunately, Ubuntu 19 decided to create a /usr/lib64 BUT
      NOT INCLUDE IT IN THE DEFAULT ld.so.conf.  So if anything is
      installed there, it won't work.
      
      The new method, just looks for $ID in /etc/os-release and if it's
      centos or fedora, uses /usr/lib64 and if ubuntu, uses /usr/lib.
      
      NOTE:  This applies only to the CI scripts.  Normal asterisk
      build and install is not affected.
      
      Change-Id: Iad66374b550fd89349bedbbf2b93f8edd195a7c3
      0ba52ce3
  5. May 21, 2019
    • Matt Jordan's avatar
      res_prometheus: Add Asterisk channel metrics · 0760af71
      Matt Jordan authored
      This patch adds basic Asterisk channel statistics to the res_prometheus
      module. This includes:
      
      * asterisk_calls_sum: A running sum of the total number of
        processed calls
      
      * asterisk_calls_count: The current number of calls
      
      * asterisk_channels_count: The current number of channels
      
      * asterisk_channels_state: The state of any particular channel
      
      * asterisk_channels_duration_seconds: How long a channel has existed,
        in seconds
      
      In all cases, enough information is provided with each channel metric
      to determine a unique instance of Asterisk that provided the data, as
      well as the name, type, unique ID, and - if present - linked ID of each
      channel.
      
      ASTERISK-28403
      
      Change-Id: I0db306ec94205d4f58d1e7fbabfe04b185869f59
      0760af71
    • Matt Jordan's avatar
      Add core Prometheus support to Asterisk · c50f29df
      Matt Jordan authored
      Prometheus is the defacto monitoring tool for containerized applications.
      This patch adds native support to Asterisk for serving up Prometheus
      compatible metrics, such that a Prometheus server can scrape an Asterisk
      instance in the same fashion as it does other HTTP services.
      
      The core module in this patch provides an API that future work can build
      on top of. The API manages metrics in one of two ways:
      (1) Registered metrics. In this particular case, the API assumes that
          the metric (either allocated on the stack or on the heap) will have
          its value updated by the module registering it at will, and not
          just when Prometheus scrapes Asterisk. When a scrape does occur,
          the metrics are locked so that the current value can be retrieved.
      (2) Scrape callbacks. In this case, the API allows consumers to be
          called via a callback function when a Prometheus initiated scrape
          occurs. The consumers of the API are responsible for populating
          the response to Prometheus themselves, typically using stack
          allocated metrics that are then formatted properly into strings
          via this module's convenience functions.
      
      These two mechanisms balance the different ways in which information is
      generated within Asterisk: some information is generated in a fashion
      that makes it appropriate to update the relevant metrics immediately;
      some information is better to defer until a Prometheus server asks for
      it.
      
      Note that some care has been taken in how metrics are defined to
      minimize the impact on performance. Prometheus's metric definition
      and its support for nesting metrics based on labels - which are
      effectively key/value pairs - can make storage and managing of metrics
      somewhat tricky. While a naive approach, where we allow for any number
      of labels and perform a lot of heap allocations to manage the information,
      would absolutely have worked, this patch instead opts to try to place
      as much information in length limited arrays, stack allocations, and
      vectors to minimize the performance impacts of scrapes. The author of
      this patch has worked on enough systems that were driven to their knees
      by poor monitoring implementations to be a bit cautious.
      
      Additionally, this patch only adds support for gauges and counters.
      Additional work to add summaries, histograms, and other Prometheus
      metric types may add value in the future. This would be of particular
      interest if someone wanted to track SIP response types.
      
      Finally, this patch includes unit tests for the core APIs.
      
      ASTERISK-28403
      
      Change-Id: I891433a272c92fd11c705a2c36d65479a415ec42
      c50f29df
  6. May 06, 2019
    • Kevin Harwell's avatar
      conversions.c: Add conversions for largest max sized integer · def6bbc9
      Kevin Harwell authored
      Added a conversion for umax (largest maximum sized integer allowed). Adjusted
      the other current conversion functions (uint and ulong) to be derivatives of
      the umax conversion since they are simply subsets of umax.
      
      Also made the negative check move the pointer on spaces since strtoumax does it
      anyways.
      
      Change-Id: I56c2ef2629d49b524c8df58af12951c181f81f08
      def6bbc9
  7. Apr 15, 2019
    • George Joseph's avatar
      CI: Move test group config files to Jenkins · 8a32b680
      George Joseph authored
      One of the downaides of having things like test configuration
      in the git repo is that it can't be changed at runtime.  You have
      to create a review for the changes and merge it mefore it will
      take effect.
      
      This review moves the data currently held in
      tests/CI/periodic-dailyTestGroups.json and
      tests/CI/gateTestGroups.json into a Jenkins Config File attached
      to the job definitions.  This allows us to alter it from the
      Jenkins UI at runtime.  The original files stay in the repo
      as documentation.
      
      Change-Id: I14b9702f6285ce1fb2420287ba0e7d3b59109763
      8a32b680
  8. Apr 03, 2019
  9. Mar 26, 2019
    • sungtae kim's avatar
      main/json.c: Added app_name, app_data to channel type · 76768ad6
      sungtae kim authored
      It was difficult to check the channel's current application and
      parameters using ARI for current channels. Added app_name, app_data
      items to show the current application information.
      
      ASTERISK-28343
      
      Change-Id: Ia48972b3850e5099deab0faeaaf51223a1f2f38c
      76768ad6
  10. Mar 18, 2019
    • George Joseph's avatar
      sorcery.c: Sorcery enhancements for wizard management · 7e77815a
      George Joseph authored
      Added ability to specifiy a wizard is read-only when applying
      it to a specific object type.  This allows you to specify
      create, update and delete callbacks for the wizard but limit
      which object types can use them.
      
      Added the ability to allow an object type to have multiple
      wizards of the same type.  This is indicated when a wizard
      is added to a specific object type.
      
      Added 3 new sorcery wizard functions:
      
      * ast_sorcery_object_type_insert_wizard which does the same thing
        as the existing ast_sorcery_insert_wizard_mapping function but
        accepts the new read-only and allot-duplicates flags and also
        returns the ast_sorcery_wizard structure used and it's internal
        data structure. This allows immediate use of the wizard's
        callbacks without having to register a "wizard mapped" observer.
      
      * ast_sorcery_object_type_apply_wizard which does the same
        thing as the existing ast_sorcery_apply_wizard_mapping function
        but has the added capabilities of
        ast_sorcery_object_type_insert_wizard.
      
      * ast_sorcery_object_type_remove_wizard which removes a wizard
        matching both its name and its original argument string.
      
      * The original logic in __ast_sorcery_insert_wizard_mapping was moved
        to __ast_sorcery_object_type_insert_wizard and enhanced for the
        new capabilities, then __ast_sorcery_insert_wizard_mapping was
        refactored to just call __ast_sorcery_insert_wizard_mapping.
      
      * Added a unit test to test_sorcery.c to test the read-only
        capability.
      
      Change-Id: I40f35840252e4313d99e11dbd80e270a3aa10605
      7e77815a
  11. Mar 11, 2019
    • sungtae kim's avatar
      res/res_ari: Added timestamp as a requirement for all ARI events · e2eb19b3
      sungtae kim authored
      Changed to requirement to having timestamp for all of ARI events.
      The below ARI events were changed to having timestamp.
      PlaybackStarted, PlaybackContinuing, PlaybackFinished,
      RecordingStarted, RecordingFinished, RecordingFailed,
      ApplicationReplaced, ApplicationMoveFailed
      
      ASTERISK-28326
      
      Change-Id: I382c2fef58f5fe107e1074869a6d05310accb41f
      e2eb19b3
  12. Feb 27, 2019
    • George Joseph's avatar
      CI: Update jenkinsfiles with new Gerrit URLs · e0fc6632
      George Joseph authored
      The recent upgrade of Gerrit to 2.16 elimiated referencing a
      repository in a way the jenkinsfiles were relying on so
      the URL references were changed to a more consistent and supported
      format.
      
      Change-Id: I2e8e3f213b9a96bb1b27665eca4a9a24bc49820e
      (cherry picked from commit 5ce08457)
      e0fc6632
  13. Feb 20, 2019
    • George Joseph's avatar
      taskprocessor: Enable subsystems and overload by subsystem · c2adeb9d
      George Joseph authored
      To prevent one subsystem's taskprocessors from causing others
      to stall, new capabilities have been added to taskprocessors.
      
      * Any taskprocessor name that has a '/' will have the part
        before the '/' saved as its "subsystem".
        Examples:
        "sorcery/acl-0000006a" and "sorcery/aor-00000019"
        will be grouped to subsystem "sorcery".
        "pjsip/distributor-00000025" and "pjsip/distributor-00000026"
        will bn grouped to subsystem "pjsip".
        Taskprocessors with no '/' have an empty subsystem.
      
      * When a taskprocessor enters high-water alert status and it
        has a non-empty subsystem, the subsystem alert count will
        be incremented.
      
      * When a taskprocessor leaves high-water alert status and it
        has a non-empty subsystem, the subsystem alert count will be
        decremented.
      
      * A new api ast_taskprocessor_get_subsystem_alert() has been
        added that returns the number of taskprocessors in alert for
        the subsystem.
      
      * A new CLI command "core show taskprocessor alerted subsystems"
        has been added.
      
      * A new unit test was addded.
      
      REMINDER: The taskprocessor code itself doesn't take any action
      based on high-water alerts or overloading.  It's up to taskprocessor
      users to check and take action themselves.  Currently only the pjsip
      distributor does this.
      
      * A new pjsip/global option "taskprocessor_overload_trigger"
        has been added that allows the user to select the trigger
        mechanism the distributor uses to pause accepting new requests.
        "none": Don't pause on any overload condition.
        "global": Pause on ANY taskprocessor overload (the default and
        current behavior)
        "pjsip_only": Pause only on pjsip taskprocessor overloads.
      
      * The core pjsip pool was renamed from "SIP" to "pjsip" so it can
        be properly grouped into the "pjsip" subsystem.
      
      * stasis taskprocessor names were changed to "stasis" as the
        subsystem.
      
      * Sorcery core taskprocessor names were changed to "sorcery" to
        match the object taskprocessors.
      
      Change-Id: I8c19068bb2fc26610a9f0b8624bdf577a04fcd56
      c2adeb9d
  14. Feb 19, 2019
    • Joshua Colp's avatar
      CI: Use tmpfs option to Docker instead of mount. · f4c9a351
      Joshua Colp authored
      Some tests require Asterisk to execute scripts which
      are stored in /tmp. When mount is used for tmpfs there
      is no ability to allow scripts to be executed from
      that location.
      
      This change switches to using tmpfs which can be told
      to allow executables to be run from /tmp.
      
      Change-Id: I0e598ca2b76af1f7f2d29f0da7b1731a214a291a
      f4c9a351
  15. Feb 08, 2019
    • Joshua Colp's avatar
      ci: Rerun unit tests when non-code changes occur. · c2ea9c90
      Joshua Colp authored
      This change makes it so that even if non-code changes
      occur (such as commit message changing) unit tests
      will still be run and result in a verification.
      
      ASTERISK-28251
      
      Change-Id: I6491fff7c93e5d5cd8e41054486968bf66c4f608
      c2ea9c90
  16. Dec 07, 2018
    • George Joseph's avatar
      stasis: Allow filtering by formatter · 3f3dd992
      George Joseph authored
      A subscriber can now indicate that it only wants messages
      that have formatters of a specific type.  For instance,
      manager can indicate that it only wants messages that have a
      "to_ami" formatter.  You can combine this with the existing
      filter for message type to get only messages with specific
      formatters or messages of specific types.
      
      ASTERISK-28186
      
      Change-Id: Ifdb7a222a73b6b56c6bb9e4ee93dc8a394a5494c
      3f3dd992
  17. Dec 05, 2018
    • George Joseph's avatar
      CI: Various updates to buildAsterisk.sh · 19c4e0f5
      George Joseph authored
      * Added ---no-configure, --no-menuselect, --no-make and --no-alembic
        options that prevent those actions from being performed.  Useful
        for testing and re-running portions of the build after fixing
        earlier failures.
      
      * Added "set -e" to abort the script on command failure.
        Not sure why this wasn't there in the first place.
      
      * Fixed a few echos that were redirecting to stderr when they shouldn't
        have been.
      
      * Catch more alembic failures by actually trying to generate the SQL.
      
      Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb
      19c4e0f5
  18. Dec 02, 2018
    • Chris-Savinovich's avatar
      test_websocket_client.c: Disable websocket_client_create_and_connect test. · 6c13b208
      Chris-Savinovich authored
      This test was occasionally failing, with:
      
        WARNING[5812]: http.c:1939 httpd_helper_thread: Failed to set
            TCP_NODELAY on HTTP connection: Bad file descriptor
        ERROR[5812]: iostream.c:91 ast_iostream_nonblock: Failed to get
            fcntl() flags for file descriptor: Bad file descriptor
        ERROR[5812]: iostream.c:569 ast_iostream_close: close() failed: Bad
            file descriptor
      
      Disabled for now by making the test explicit only.
      
      Change-Id: I778f6cbb6104c6b4e89737a2eaf1a9540888d351
      6c13b208
  19. Nov 26, 2018
    • George Joseph's avatar
      test_cel: Plug a few ref leaks · f4924d40
      George Joseph authored
      These are only a few of the leaks.  The large number of macros
      and return paths in this file would make a weeks worth of work
      to plug them all.
      
      Change-Id: Ie2369fa944023d44767871c5c30974cb077ffb56
      f4924d40
    • George Joseph's avatar
      bridges: Remove reliance on stasis caching · 3667c5e1
      George Joseph authored
      * The bridging core no longer uses the stasis cache for bridge
        snapshots.  The latest bridge snapshot is now stored on the
        ast_bridge structure itself.
      
      * The following APIs are no longer available since the stasis cache
        is no longer used:
          ast_bridge_topic_cached()
          ast_bridge_topic_all_cached()
      
      * A topic pool is now used for individual bridge topics.
      
      * The ast_bridge_cache() function was removed since there's no
        longer a separate container of snapshots.
      
      * A new function "ast_bridges()" was created to retrieve the
        container of all bridges.  Users formerly calling
        ast_bridge_cache() can use the new function to iterate over
        bridges and retrieve the latest snapshot directly from the
        bridge.
      
      * The ast_bridge_snapshot_get_latest() function was renamed to
        ast_bridge_get_snapshot_by_uniqueid().
      
      * A new function "ast_bridge_get_snapshot()" was created to retrieve
        the bridge snapshot directly from the bridge structure.
      
      * The ast_bridge_topic_all() function now returns a normal topic
        not a cached one so you can't use stasis cache functions on it
        either.
      
      * The ast_bridge_snapshot_type() stasis message now has the
        ast_bridge_snapshot_update structure as it's data.  It contains
        the last snapshot and the new one.
      
      * cdr, cel, manager and ari have been updated to use the new
        arrangement.
      
      Change-Id: I7049b80efa88676ce5c4666f818fa18ad1985369
      3667c5e1
    • Joshua Colp's avatar
      stasis: Segment channel snapshot to reduce creation cost. · 50ac85cb
      Joshua Colp authored
      When a channel snapshot was created it used to be done
      from scratch, copying all data (many strings). This incurs
      a cost when doing so.
      
      This change segments the channel snapshot into different
      components which can be reused if unchanged from the
      previous snapshot creation, reducing the cost. In normal
      cases this results in some pointers being copied with
      reference count being bumped, some integers being set,
      and a string or two copied. The other benefit is that it
      is now possible to determine if a channel snapshot update
      is redundant and thus stop it before a message is published
      to stasis.
      
      The specific segments in the channel snapshot were split up
      based on whether they are changed together, how often they
      are changed, and their general grouping. In practice only
      1 (or 0) of the segments actually get changed in normal
      operation.
      
      Invalidation is done by setting a flag on the channel when
      the segment source is changed, forcing creation of a new
      segment when the channel snapshot is created.
      
      ASTERISK-28119
      
      Change-Id: I5d7ef3df963a88ac47bc187d73c5225c315f8423
      50ac85cb
    • Joshua Colp's avatar
      stasis: Use an implementation specific channel snapshot cache. · d0ccbb33
      Joshua Colp authored
      Channels no longer use the Stasis cache for channel snapshots. Instead
      they are stored in a hash table in stasis_channels which reduces the
      number of Stasis messages created and allows better storage.
      
      As a result the following APIs are no longer available since the stasis
      cache is no longer used:
      ast_channel_topic_cached()
      ast_channel_topic_all_cached()
      
      The ast_channel_cache_all() and ast_channel_cache_by_name() functions
      now return an ao2_container of ast_channel_snapshots rather than
      a container of stasis_messages therefore you can't (and don't need
      to) call stasis_cache functions on it.
      
      The ast_channel_topic_all() function now returns a normal topic not
      a cached one so you can't use stasis cache functions on it either.
      
      The ast_channel_snapshot_type() stasis message now has the
      ast_channel_snapshot_update structure as it's data. It contains the
      last snapshot and the new one.
      
      ast_channel_snapshot_get_latest() still returns the latest snapshot.
      
      The latest snapshot is now stored on the channel itself to eliminate
      cache hits when Stasis messages that have the snapshot as a payload
      are created.
      
      ASTERISK-28102
      
      Change-Id: I9334febff60a82d7c39703e49059fa3a68825786
      d0ccbb33
  20. Nov 21, 2018
  21. Nov 19, 2018
    • George Joseph's avatar
      CI: Get job timeouts from environment · bcdfb903
      George Joseph authored
      The job timeouts were hard coded in the jenkinsfiles which
      means changes had to go through gerrit.  Now they are taken
      from the following environment variables (and their defaults) that
      can be set in Jenkins configuration...
      
      TIMEOUT_GATES =      "60 MINUTES"
      TIMEOUT_DAILIES =    "3 HOURS"
      TIMEOUT_REF_DEBUG =  "24 HOURS"
      TIMEOUT_UNITTESTS =  "30 MINUTES"
      
      Change-Id: I673a551c1780bf665a3bc160b245da574aa4bbab
      bcdfb903
    • George Joseph's avatar
      backtrace: Refactor ast_bt_get_symbols so it doesn't crash · ece5f801
      George Joseph authored
      We've been seeing crashes in libbfd when we attempt to generate
      a stack trace from multiple threads.  It turns out that libbfd
      is NOT thread-safe.  It can cache the bfd structure and give it to
      multiple threads without protecting itself.  To get around this,
      we've added a global mutex around the bfd functions and also have
      refactored the use of those functions to be more efficient and
      to provide more information about inlined functions.
      
      Also added a few more tests to test_pbx.c.  One just calls
      ast_assert() and the other calls ast_log_backtrace().  Neither are
      run by default.
      
      WARNING:  This change necessitated changing the return value of
      ast_bt_get_symbols() from an array of strings to a VECTOR of
      strings.  However, the use of this function outside Asterisk is not
      likely.
      
      ASTERISK-28140
      
      Change-Id: I79d02862ddaa2423a0809caa4b3b85c128131621
      ece5f801
  22. Nov 18, 2018
  23. Nov 17, 2018
    • George Joseph's avatar
      CI: Mount a tmpfs on /tmp for testsuite docker containers · f5e3832d
      George Joseph authored
      Change-Id: I0566d81b0852f22066cd76d58eae5f1fda5602aa
      (cherry picked from commit 73efe864)
      f5e3832d
    • George Joseph's avatar
      CI: Pass work directory to runTestsuite · be87185f
      George Joseph authored
      The testsuite can now use a user-specified work directory for
      all it's temp files.  This allows the docker containers to use
      a tmpfs backed directory for the temp files instead of it's
      own write-layer image.
      
      * runTestsuite.sh now accepts a --work-dir command line argument
        that gets exported as AST_WORK_DIR before running the testsuite.
      
      * gates.jenkinsfile now specifies --work-dir to be
        <testsuite_dir>/astroot.
      
      Since the Asterisk CI docker hosts now mount /srv/jenkins/workspace
      on a tmpfs, asterisk should be compiled and the testsuite run all in
      memory.
      
      Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45
      (cherry picked from commit a335f4c9)
      be87185f
  24. Nov 16, 2018
    • George Joseph's avatar
      CI: Allow runUnittests to use 'expect' to run the tests · 8ff3435c
      George Joseph authored
      There seems to be a race condition between starting the asterisk
      daemon and attempting to use 'asterisk -r' that can cause the
      control socket file to not be created.  Since all of the Jenkins
      slaves have 'expect' installed, the runUnittests script can use
      it to start asterisk in the forground and issue the commands
      interactively.  This is much more reliable and it can also make
      startup errors more visible since they'll be in the Jenkins console
      output.
      
      If 'expect' isn't installed, the original daemon/asterisk -r
      process is used.
      
      Also added a "core show settings" before running the tests
      and added "notice,warning,error" to the console log.
      
      Change-Id: Idd656085f854afede813ac241b9e312b31358160
      8ff3435c
  25. Nov 13, 2018
  26. Oct 19, 2018
    • Corey Farrell's avatar
      astobj2: Eliminate legacy container allocation macros. · 687ab7ae
      Corey Farrell authored
      These macros have been documented as legacy for a long time but are
      still used in new code because they exist.  Remove all references to:
      * ao2_container_alloc_options
      * ao2_t_container_alloc_options
      * ao2_t_container_alloc
      
      These macro's are also removed.  Only ao2_container_alloc remains due to
      it's use in over 100 places.
      
      Change-Id: I1a26258b5bf3deb081aaeed11a0baa175c933c7a
      Unverified
      687ab7ae
  27. Oct 17, 2018
  28. Oct 04, 2018
  29. Oct 03, 2018
Loading