All Versions
111
Latest Version
Avg Release Cycle
29 days
Latest Release
-

Changelog History
Page 5

  • v18.2.0 Changes

    โž• Added

    
    * inject-thrift-client: Add methods to
      ``c.t.inject.thrift.filters.ThriftClientFilterChain`` to allow
      Tunable timeouts and request timeouts. ``PHAB_ID=D128506``
    
    * inject-thrift-client: Add ``idempotent`` and ``nonIdempotent``
      methods to
      ``c.t.inject.thrift.ThriftMethodBuilder``, which can be used to
      configure retries and the sending of
      backup requests. ``PHAB_ID=D129959``
    
    * inject-thrift-client: Add
      ``c.t.inject.thrift.modules.ServicePerEndpointModule`` for
      building ThriftMux clients using the ``thriftmux.MethodBuilder``.
      ``PHAB_ID=D128196``
    
    ๐Ÿ”„ Changed
    
    • โšก๏ธ inject-thrift: Update c.t.inject.thrift.PossibleRetryable to specify a ResponseClassifier and update usages in inject-thrift-client to use it. PHAB_ID=D134328

    • ๐Ÿ—„ inject-thrift-client: Un-deprecate c.t.inject.thrift.modules.ThriftClientModule and update for parity with ServicePerEndpointModule in regards to ThriftMux client configuration. Update documentation. Rename ServicePerEndpointModule to the more descriptive and consistently named ThriftMethodBuilderClientModule. PHAB_ID=D129891

    ๐Ÿ›  Fixed

    
    Closed
    
  • v18.1.0 Changes

    โž• Added

    
    * ๐Ÿ— finatra-thrift: Add support for building all types of Finagle Thrift clients to the underlying
      embedded TwitterServer with the ``c.t.finatra.thrift.ThriftClient`` test utility.
      See: `Creating a client <https://twitter.github.io/scrooge/Finagle.html#creating-a-client>`__
      ``PHAB_ID=D123915``
    
    * ๐Ÿ‘ finatra-jackson: Added support to finatra/jackson for de-serializing
      ``com.twitter.util.Duration`` instances from their String representations.
      ``PHAB_ID=D122366``
    
    ๐Ÿ”„ Changed
    
    • finatra-http: Change visibility of internal class c.t.finatra.http.internal.marshalling.RequestInjectableValues to be correctly specified as private to the http package. PHAB_ID=D127975

    ๐Ÿ›  Fixed

    
    *  finatra-http: Ensure we close resources in the ``ResponseBuilder``.
       Addresses `#440 <https://github.com/twitter/finatra/issues/440>`__. ``PHAB_ID=D120779``
    
    Closed
    
  • v17.12.0 Changes

    โž• Added

    
    * โœ…  finatra-thrift: Add tests for new Scrooge
       ``ReqRepServicePerEndpoint``
       functionality. ``PHAB_ID=D107397``
    
    ๐Ÿ”„ Changed
    
    • finatra-http: add a multipart = true arg to EmbeddedHttpServer.httpMultipartFormPost `\ PHAB_ID=D113151
    • inject-sever: Do not use the c.t.inject.server.EmbeddedTwitterServer InMemoryStatsReceiver for embedded http clients. The http client stats are emitted with the server under test stats which can be confusing, thus we now create a new InMemoryStatsReceiver when creating an embedded http client. PHAB_ID=D112024

    ๐Ÿ›  Fixed

    
    Closed
    
  • v17.11.0 Changes

    โž• Added

    
    ๐Ÿ”„ Changed
    
    • EmbeddedTwitterServer, EmbeddedHttpServer, and EmbeddedThriftServer flags and args parameters changed to call-by-name. `\ PHAB_ID=\ D104733`

    ๐Ÿ›  Fixed

    
    *  inject-server: Ensure EmbeddedTwitterServer has started before trying
       to
       close httpAdminClient. ``PHAB_ID=D111294``
    
    Closed
    
  • v17.10.0 Changes

    โž• Added

    
    * ๐Ÿšš inject-core: Remove deprecated ``c.t.inject.TestMixin#resetMocks``.
      Properly
      use ``c.t.inject.Mockito`` trait in tests. Deprecate resetting of
      mocks and
      resettables in ``c.t.inject.IntegrationTestMixin``.
      ``PHAB_ID=D93876``
    
    * finatra-http: Parameterize
      ``@RouteParam``,\ ``@QueryParam``,\ ``@FormParam``, and
      ``@Header`` to allow specifying the field name to read from the
      params or
      header map. Previously these annotations only looked for values by
      the
      case class field name leading to possible ugliness when defining
      case
      class fields (especially with ``@Header``).
      \`\ ``PHAB_ID=``\ D94220\`
    
    * ๐Ÿ‘ finatra: Add support for using a
      ``java.lang.annotation.Annotation`` instance
      with the ``#bind[T]`` testing DSL. This adds a way to bind
      instances in tests
      that use the @Named binding annotation. ``PHAB_ID=D91330``
    
    * finatra-http: Allow setting the content type of a Mustache view.
      ``PHAB_ID=D91949``
    
    ๐Ÿ”„ Changed
    
    • ๐Ÿšš finatra-http: Move FileResolver to finatra/utils. PHAB_ID=D103536

    • ๐Ÿšš finatra-utils: Move ResponseUtils to finatra/http. PHAB_ID=D103507

    • ๐Ÿš€ From now on, release versions will be based on release date in the format of YY.MM.x where x is a patch number. PHAB_ID=D101244

    • ๐Ÿšš finatra-utils: Remove deprecated ExternalServiceExceptionMatcher. PHAB_ID=D98343

    • finatra-jackson: ScalaType's isMap and isCollection methods now check that the given object's class is a subclass of scala.collection.Map[Any, Any] and scala.collection.Iterable[Any], respectively. Previously the superclasses' packages were unspecified. This is a runtime behavior change. PHAB_ID=D93104

    • ๐Ÿ›  finatra-http: Require that route URIs and prefixes begin with forward slash (/). PHAB_ID=D90895

    • inject-utils: (BREAKING API CHANGE) RichOption toFutureOrFail, toTryOrFail, and toFutureOrElse signature changed to take the fail or else parameter by name. PHAB_ID=D89544

    • ๐Ÿšš inject-server: Remove usage of deprecated c.t.inject.logging.Slf4jBridgeUtility. Change usages to c.t.util.logging.Slf4jBridgeUtility. PHAB_ID=D88095

    • ๐Ÿšš finatra-http, inject-thrift-client: Remove netty3 specific types and dependency. In finatra-http, the code using these types is deprecated and can be removed allowing us to remove netty3-specific dependencies. In inject-thrift-client we can default to use the DefaultTimer for the backupRequestFilter method param instead of the HashedWheelTimer. PHAB_ID=D88025

    ๐Ÿ›  Fixed

    
    * finatra-http: Parameterized route callback inputs fail because the
      lookup of a
      corresponding ``MessageBodyManager`` reader lookup does not
      properly handle parameterized
      types such as collections. This change updates the
      ``MessageBodyManager`` ``MessageBodyReader``
      lookup to take into account parameterized types. This allows for a
      user to parse a
      ``Seq[T]``, or ``Map[K, V]`` as a route callback input type using
      the default Finatra
      ``MessageBodyReader``. ``PHAB_ID=D104277``
    
    * finatra-jackson: Fix issue causing ``IllegalArgumentException``
      from Validations to
      be swallowed. A catch clause in the
      ``c.t.finatra.json.internal.caseclass.jackson.FinatraCaseClassDeserializer``
      is too broad as it catches thrown ``IllegalArgumentException``\ s
      from field validations
      when the annotation is applied to a field of the incorrect type,
      e.g., when ``@Max`` is
      applied to a String field. ``PHAB_ID=D95306``
    
    Closed
    
  • v2.13.0 Changes

    โž• Added

    
    * ๐Ÿ‘•  inject-server: Add ability to fail embedded server startup on lint
       rule violation.
       There is now a flag in the embedded servers that when set to true
       will fail
       server startup if a lint rule violation is detected. This will then
       fail
       the running test. ``PHAB_ID=D82399``
    
    ๐Ÿ”„ Changed
    
    • finatra-http: No longer depend on bijection-util. PHAB_ID=D86640

    • ๐Ÿ—„ finatra-jackson: Deprecate c.t.finatra.json.utils.CamelCasePropertyNamingStrategy. This object was created to reduce ambiguity with previous releases of Jackson in which the default PropertyNamingStrategy was an abstract class with a default of camel case. Users are encouraged to use the Jackson PropertyNamingStrategy constants directly. PHAB_ID=D81707

    ๐Ÿ›  Fixed

    
    Closed
    
  • v2.12.0 Changes

    โž• Added

    
    * ๐Ÿ‘  finatra-jackson: Add support for injecting a snake case
       FinatraObjectMapper by annotating
       parameters with a new @SnakeCaseMapper binding annotation.
       ``PHAB_ID=D7798``
    
    ๐Ÿ”„ Changed
    
    • finatra-http: Add close hook when constructing a StreamingResponse to allow for resource release without consuming an entire AsyncStream. PHAB_ID=D64013

    • finatra-http: Unmarshalling JSON no longer consumes the body of a HTTP Request. PHAB_ID=D74519

    • ๐Ÿšš finatra-inject: RetryUtil.retry has been removed because it used a blocking call to Thread.sleep. Blocking Finagle threads results in poor performance and RetryUtil.retryFuture should be used instead. PHAB_ID=D73949

    ๐Ÿ›  Fixed

    
    Closed
    
  • v2.11.0 Changes

    โž• Added

    
    ๐Ÿ”„ Changed
    

    ๐Ÿ›  Fixed

    
    *  finatra-jackson: Fix JSON deserialization of scala.util.Either type
       in FinatraObjectMapper
       for Scala 2.12. ``RB_ID=917699``
    
    Closed
    
  • v2.10.0 Changes

    โž• Added

    
    ๐Ÿ”„ Changed
    
    • finatra-http: Increase composability and flexibility of RouteDSL. RB_ID=912095

    • inject-app: Run installed modules postInjectorStartup before server function. This makes reasoning about the server lifecycle a bit more straight-forward and simplifies things like the exception manager logic for adding and overridding mappers. RB_ID=911965

    • โšก๏ธ finatra-jackson: Update framework tests to FunSuite ScalaTest testing style. RB_ID=911745

    • ๐Ÿšš finatra: Move finatra/benchmarks and finatra/utils framework tests to FunSuite ScalaTest testing style. RB_ID=910680

    ๐Ÿ›  Fixed

    
    * ๐Ÿ‘€ finatra-http: Correctly return a JsonParseException when the
      incoming JSON is not parsable
      as an expected custom case class request object. ``RB_ID=912529``
    
    * finatra-http: Ensure underlying members are injected for
      AbstractControllers. ``RB_ID=911635``
    
    * ๐Ÿ‘ finatra-jackson: Patch ``FinatraDatetimeDeserializer`` to support
      parsing of Long value passed
      as String, e.g., when parsing a query parameter.\ ``RB_ID=911162``
    
    * finatra: Close embedded server clients on embedded server close.
      ``RB_ID=910862``
    
    Closed
    
  • v2.9.0 Changes

    โž• Added

    
    ๐Ÿ”„ Changed
    
    • inject-core: (BREAKING API CHANGE) Allow for binding of higher-kinded types when testing. Deprecated @Bind mechanism for replacing bound types in an object graph. Now instead of using @Bind like this:

    ::

      class DarkTrafficCanonicalResourceHeaderTest
        extends FeatureTest
        with Mockito {
    
        @Bind
        @DarkTrafficService
        val darkTrafficService: Option[Service[Request, Response]] =
          Some(smartMock[Service[Request, Response]])
    
        /* mock request */
        darkTrafficService.get.apply(any[Request]).returns(Future.value(smartMock[Response]))
    
        override val server = new EmbeddedHttpServer(
          twitterServer = new DarkTrafficTestServer)
    
        test("DarkTrafficServer#has Canonical-Resource header correctly set") {
         ...
    

    Users can instead do:

    ::

      class DarkTrafficCanonicalResourceHeaderTest
      extends FeatureTest
      with Mockito {
       val darkTrafficService: Option[Service[Request, Response]] =
         Some(smartMock[Service[Request, Response]])
    
       /* mock request */
       darkTrafficService.get.apply(any[Request]).returns(Future.value(smartMock[Response]))
    
       override val server = new EmbeddedHttpServer(
         twitterServer = new DarkTrafficTestServer)
         .bind[Option[Service[Request, Response]], DarkTrafficService](darkTrafficService)
    
       test("DarkTrafficServer#has Canonical-Resource header correctly set") {
         ...
    

    This allows for more flexibility (as the binding is now per object graph, rather than per test files) and is less susceptible to errors due to incorrect usage.

    The breaking API change is due to adding this support in the TestInjector, it is now required that users call the TestInjector#create method in order to build the injector and that this is done after calls to TestInjector#bind. Previously, an Injector was directly returned from TestInjector#apply which is no longer true, thus it may look like your IntegrationTests are broken as you now need to add a call to TestInjector#create.

    Additionally, this change updates all of the framework tests in the inject modules to the FunSuite testing style from the deprecated WordSpec testing style. RB_ID=910011

    • โšก๏ธ finatra-thrift: Update framework tests to FunSuite ScalaTest testing style. RB_ID=910262

    • ๐Ÿšš inject-core: Move Logging from grizzled-slf4j to util/util-slf4j-api. c.t.inject.Logger is now deprecated in favor of c.t.util.logging.Logger in util. PHAB_ID=D29713

    • โšก๏ธ finatra-httpclient: Update framework tests to FunSuite ScalaTest testing style. RB_ID=909526

    • โšก๏ธ finatra-http: Update framework tests to FunSuite ScalaTest testing style. RB_ID=909349

    • finatra: Bump guava to 19.0. RB_ID=907807

    • inject-thrift-client: Various APIs have changed to work with ThriftMethod.SuccessType instead of ThriftMethod.Result. See ThriftClientFilterChain, Controller, ThriftWarmup, PossiblyRetryable. RB_ID=908846

    ๐Ÿ›  Fixed

    
    * ๐Ÿ‘ finatra-http: Correctly support adding Java AbstractController by
      instance. ``RB_ID=910502``
    
    Closed