From 6401c81b520cf58da240b76d6504b568473de9a3 Mon Sep 17 00:00:00 2001
From: eeliu <27064129+eeliu@users.noreply.github.com>
Date: Fri, 17 Dec 2021 17:55:26 +0800
Subject: [PATCH 1/3] for yii2
---
auto_pinpointed.php | 3 +-
lib/Pinpoint/Common/ClassFile.php | 2 +-
lib/Pinpoint/Common/PinpointDriver.php | 23 ++++++---
lib/Pinpoint/Common/PluginVisitor.php | 2 +-
lib/Pinpoint/Common/{Util.php => Utils.php} | 29 +++++++++--
.../Common/VendorAdaptorClassLoader.php | 19 +++++--
.../Plugins/Yii2PerRequestPlugins.php | 49 +++++++++++++++++++
lib/Pinpoint/test/UtilTest.php | 20 ++++----
8 files changed, 120 insertions(+), 27 deletions(-)
rename lib/Pinpoint/Common/{Util.php => Utils.php} (79%)
create mode 100644 lib/Pinpoint/Plugins/Yii2PerRequestPlugins.php
diff --git a/auto_pinpointed.php b/auto_pinpointed.php
index a8e1483..442901e 100644
--- a/auto_pinpointed.php
+++ b/auto_pinpointed.php
@@ -6,10 +6,11 @@
use Pinpoint\Plugins\PerRequestPlugins;
define('CLASS_PREFIX','Proxied_');
-PinpointDriver::getInstance()->start();
if(defined('PP_REQ_PLUGINS') && class_exists(PP_REQ_PLUGINS)){
$plugins = PP_REQ_PLUGINS;
$plugins::instance();
}else{
PerRequestPlugins::instance();
}
+
+PinpointDriver::getInstance()->start();
diff --git a/lib/Pinpoint/Common/ClassFile.php b/lib/Pinpoint/Common/ClassFile.php
index 8051577..d700f0e 100644
--- a/lib/Pinpoint/Common/ClassFile.php
+++ b/lib/Pinpoint/Common/ClassFile.php
@@ -133,7 +133,7 @@ public function fileNodeDoneCB(&$node, $loaderName)
$fullPath = AOP_CACHE_DIR.'/'.str_replace('\\','/',$loaderName).'.php';
$context= $this->_astPrinter->prettyPrintFile($node);
RenderAopClass::getInstance()->insertMapping($loaderName,$fullPath);
- Util::saveObj($context,$fullPath);
+ Utils::saveObj($context,$fullPath);
}
abstract function handleAfterTravers(&$nodes);
diff --git a/lib/Pinpoint/Common/PinpointDriver.php b/lib/Pinpoint/Common/PinpointDriver.php
index d2cdbac..f091e0e 100644
--- a/lib/Pinpoint/Common/PinpointDriver.php
+++ b/lib/Pinpoint/Common/PinpointDriver.php
@@ -45,7 +45,7 @@ final private function __construct()
{
}
- public static function getAutoGenFiles()
+ private static function getAutoGenFiles()
{
$files = [];
@@ -53,7 +53,7 @@ public static function getAutoGenFiles()
{
if(is_dir($dir))
{
- Util::scanDir($dir,"/Plugin.php$/",$files);
+ Utils::scanDir($dir,"/Plugin.php$/",$files);
}
}
@@ -65,9 +65,9 @@ public function start()
RenderAopClass::getInstance();
/// checking the cached file exist, if exist load it
- if(Util::checkCacheReady())
+ if(Utils::checkCacheReady())
{
- RenderAopClass::getInstance()->createFrom(Util::loadCachedClass());
+ RenderAopClass::getInstance()->createFrom(Utils::loadCachedClass());
RenderAopClassLoader::start();
return ;
}
@@ -89,7 +89,7 @@ public function start()
{
foreach ($naming['appendFiles'] as $class)
{
- $fullPath = Util::findFile($class);
+ $fullPath = Utils::findFile($class);
if(!$fullPath)
continue;
$visitor = new OriginFileVisitor();
@@ -103,7 +103,7 @@ public function start()
{
if(empty($class))
continue;
- $fullPath = Util::findFile($class);
+ $fullPath = Utils::findFile($class);
if(!$fullPath )
continue;
$visitor = new OriginFileVisitor();
@@ -114,10 +114,17 @@ public function start()
}
}
// save render aop class into index file
- Util::saveCachedClass(RenderAopClass::getInstance()->getLoadeMap());
+ Utils::saveCachedClass(RenderAopClass::getInstance()->getLoadeMap());
// enable RenderAop class loader
RenderAopClassLoader::start();
}
-
+ /**
+ * start /tail are the spl_autoload_functions checking order
+ * @param callable $start
+ * @param callable $tail
+ */
+ public function addClassFinderHelper(callable $start, callable $tail){
+ Utils::addLoaderPatch($start,$tail);
+ }
}
diff --git a/lib/Pinpoint/Common/PluginVisitor.php b/lib/Pinpoint/Common/PluginVisitor.php
index bac553d..3e13c06 100644
--- a/lib/Pinpoint/Common/PluginVisitor.php
+++ b/lib/Pinpoint/Common/PluginVisitor.php
@@ -44,7 +44,7 @@ private function loadCommentFunc(&$node,$mode)
{
foreach( $node->getComments() as &$doc)
{
- $funArray = Util::parseUserFunc(trim($doc->getText()));
+ $funArray = Utils::parseUserFunc(trim($doc->getText()));
foreach ($funArray as $func)
{
diff --git a/lib/Pinpoint/Common/Util.php b/lib/Pinpoint/Common/Utils.php
similarity index 79%
rename from lib/Pinpoint/Common/Util.php
rename to lib/Pinpoint/Common/Utils.php
index 5c6ba15..4201e19 100644
--- a/lib/Pinpoint/Common/Util.php
+++ b/lib/Pinpoint/Common/Utils.php
@@ -23,12 +23,19 @@
namespace Pinpoint\Common;
-class Util
+class Utils
{
const U_Method= 1;
const U_Function= 2;
const U_INDEX_FILE_PATH = AOP_CACHE_DIR.'__class_index_table';
+ static private $loaderPatch =[null,null];
+
+ public static function addLoaderPatch(callable $start,callable $tail=null){
+ static::$loaderPatch[0] = $start;
+ static::$loaderPatch[1] = $tail;
+ }
+
/**
* locate a class (via VendorAdaptorClassLoader)
* @param $class
@@ -36,6 +43,13 @@ class Util
*/
public static function findFile($class):string
{
+ if(is_callable(static::$loaderPatch[0])){
+ $files = call_user_func(static::$loaderPatch[0],$class);
+ if ($files){
+ return $files;
+ }
+ }
+
$splLoaders = spl_autoload_functions();
foreach ($splLoaders as &$loader) {
@@ -44,8 +58,17 @@ public static function findFile($class):string
if($address){
return realpath($address);
}
- }else{
- throw new \Exception("unknown loader");
+ }
+ // keep peace with unknown loader
+// else{
+// throw new \Exception("unknown loader");
+// }
+ }
+
+ if(is_callable(static::$loaderPatch[1])){
+ $files = call_user_func(static::$loaderPatch[1],$class);
+ if ($files){
+ return $files;
}
}
diff --git a/lib/Pinpoint/Common/VendorAdaptorClassLoader.php b/lib/Pinpoint/Common/VendorAdaptorClassLoader.php
index 68ad424..caf3672 100644
--- a/lib/Pinpoint/Common/VendorAdaptorClassLoader.php
+++ b/lib/Pinpoint/Common/VendorAdaptorClassLoader.php
@@ -111,11 +111,24 @@ public static function enable()
$loaders = spl_autoload_functions();
foreach ($loaders as &$loader) {
if ( is_array($loader) && is_callable($loader) ) {// common ClassLoader style
-
+
+ try{
+ // replace composer loader with aopclassLoader
+ $_loader = new self($loader);
+ }catch (Exception $e){
+ /**
+ * if current loader not compatible, just ignore it!
+ * why?
+ * 1. pinpoint-php-aop only works on known framework! Exception will not expose to usr
+ * 2. Keep this loader, as it will handled its class. (We could write patch for this loader)
+ * 3. Pinpoint classloader is the highest priority
+ */
+ continue;
+ }
+
// unregister composer loader
spl_autoload_unregister($loader);
- // replace composer loader with aopclassLoader
- $_loader = new self($loader);
+
spl_autoload_register(array($_loader,'loadClass'),true,false);
}
}
diff --git a/lib/Pinpoint/Plugins/Yii2PerRequestPlugins.php b/lib/Pinpoint/Plugins/Yii2PerRequestPlugins.php
new file mode 100644
index 0000000..c6ce7f9
--- /dev/null
+++ b/lib/Pinpoint/Plugins/Yii2PerRequestPlugins.php
@@ -0,0 +1,49 @@
+
Date: Mon, 20 Dec 2021 18:06:20 +0800
Subject: [PATCH 2/3] 1. yii2, db connection 2. aop library support "extend
\PDO " style
---
.../Common/GenProxiedClassFileHelper.php | 12 +++---
lib/Pinpoint/Common/NpCoderVisitor.php | 5 ++-
lib/Pinpoint/Common/OriginFileVisitor.php | 1 -
lib/Pinpoint/Common/PinpointDriver.php | 1 +
.../AutoGen/GuzzleHttp/GuzzlePlugin.php | 4 +-
.../AutoGen/MongoPlugin/MongoPlugin.php | 4 +-
.../Plugins/AutoGen/Yii2/ConnectionPlugin.php | 41 +++++++++++++++++++
lib/Pinpoint/Plugins/Common/CommonPlugin.php | 2 +-
.../Common/{Candy.php => PinTrace.php} | 2 +-
lib/Pinpoint/Plugins/Common/Trace.php | 33 +++++++++++----
lib/Pinpoint/Plugins/Common/TraceHelper.php | 30 ++++++++++++++
.../Plugins/Sys/Memcached/MemAddPlugin.php | 4 +-
.../Sys/Memcached/MemAddServerPlugin.php | 4 +-
.../Sys/Memcached/MemAddServersPlugin.php | 4 +-
.../Plugins/Sys/Memcached/MemGetPlugin.php | 4 +-
lib/Pinpoint/Plugins/Sys/PDO/PDOExec.php | 4 +-
.../Plugins/Sys/PDO/PDOGlueStatement.php | 4 +-
.../Plugins/Sys/PDO/PreparePlugin.php | 4 +-
.../Plugins/Sys/RdKafka/ProducePlugin.php | 4 +-
.../Plugins/Sys/curl/CurlExecPlugin.php | 4 +-
lib/Pinpoint/Plugins/Sys/curl/CurlUtil.php | 6 +--
.../Sys/mysqli/MysqliPreparePlugin.php | 4 +-
.../Plugins/Sys/mysqli/MysqliQueryPlugin.php | 4 +-
.../Plugins/Sys/mysqli/StmtExecutePlugin.php | 4 +-
.../Plugins/Sys/phpredis/ConnectPlugin.php | 4 +-
.../Plugins/Sys/phpredis/GetPlugin.php | 4 +-
.../Plugins/Sys/phpredis/SetPlugin.php | 4 +-
.../pinpoint => Cache/Pinpoint}/test/Foo.php | 20 ++++-----
.../Pinpoint}/test/Proxied_TestClass.php | 2 +-
.../test/Proxied_TestTrait.php | 0
.../Pinpoint}/test/TestClass.php | 4 +-
.../{pinpoint => Pinpoint}/test/TestTrait.php | 2 +-
lib/Pinpoint/test/ClassParseTest.php | 12 ++++--
.../Pinpoint}/test/Foo.php | 20 ++++-----
.../Pinpoint}/test/Proxied_TestClass.php | 2 +-
.../test/Proxied_TestTrait.php | 0
.../Pinpoint}/test/TestClass.php | 4 +-
.../{pinpoint => Pinpoint}/test/TestTrait.php | 2 +-
lib/Pinpoint/test/Foo.php | 2 +-
39 files changed, 185 insertions(+), 86 deletions(-)
create mode 100644 lib/Pinpoint/Plugins/AutoGen/Yii2/ConnectionPlugin.php
rename lib/Pinpoint/Plugins/Common/{Candy.php => PinTrace.php} (98%)
create mode 100644 lib/Pinpoint/Plugins/Common/TraceHelper.php
rename lib/Pinpoint/test/{Comparison/pinpoint => Cache/Pinpoint}/test/Foo.php (73%)
rename lib/Pinpoint/test/{Comparison/pinpoint => Cache/Pinpoint}/test/Proxied_TestClass.php (97%)
rename lib/Pinpoint/test/Cache/{pinpoint => Pinpoint}/test/Proxied_TestTrait.php (100%)
rename lib/Pinpoint/test/{Comparison/pinpoint => Cache/Pinpoint}/test/TestClass.php (98%)
rename lib/Pinpoint/test/Cache/{pinpoint => Pinpoint}/test/TestTrait.php (95%)
rename lib/Pinpoint/test/{Cache/pinpoint => Comparison/Pinpoint}/test/Foo.php (73%)
rename lib/Pinpoint/test/{Cache/pinpoint => Comparison/Pinpoint}/test/Proxied_TestClass.php (97%)
rename lib/Pinpoint/test/Comparison/{pinpoint => Pinpoint}/test/Proxied_TestTrait.php (100%)
rename lib/Pinpoint/test/{Cache/pinpoint => Comparison/Pinpoint}/test/TestClass.php (98%)
rename lib/Pinpoint/test/Comparison/{pinpoint => Pinpoint}/test/TestTrait.php (95%)
diff --git a/lib/Pinpoint/Common/GenProxiedClassFileHelper.php b/lib/Pinpoint/Common/GenProxiedClassFileHelper.php
index a9547d1..c485d29 100644
--- a/lib/Pinpoint/Common/GenProxiedClassFileHelper.php
+++ b/lib/Pinpoint/Common/GenProxiedClassFileHelper.php
@@ -113,8 +113,8 @@ public function handleEnterNew_(&$node)
assert($node instanceof Node\Expr\New_);
$node->class = $this->renderClassName($node->class,$this->t_covertCls);
return $node;
-
}
+
public function handleEnterClassConstFetch(&$node)
{
assert($node instanceof Node\Expr\ClassConstFetch);
@@ -194,10 +194,12 @@ public function handleLeaveMethodNode(&$node)
public function handleFullyQualifiedNode(&$node)
{
assert($node instanceof Node\Name\FullyQualified);
-
- $newNode = new Node\Name($node->toString());
-
- return $newNode;
+ $name = $node->toString();
+ if( isset($this->t_covertCls[$name]) ) {
+ return new Node\Name\FullyQualified($this->t_covertCls[$name]);
+ }else{
+ return $node;
+ }
}
public function addRequiredFile($fullName)
diff --git a/lib/Pinpoint/Common/NpCoderVisitor.php b/lib/Pinpoint/Common/NpCoderVisitor.php
index e971526..4e989f6 100644
--- a/lib/Pinpoint/Common/NpCoderVisitor.php
+++ b/lib/Pinpoint/Common/NpCoderVisitor.php
@@ -77,7 +77,10 @@ public function enterNode(Node $node)
}
elseif ($node instanceof Node\Expr\ClassConstFetch){
return $this->proxiedClassFile->handleEnterClassConstFetch($node);
- }elseif ($node instanceof Node\Expr\New_){
+ }
+ elseif ($node instanceof Node\Name\FullyQualified) {
+ return $this->proxiedClassFile->handleFullyQualifiedNode($node);
+ }elseif ($node instanceof Node\Expr\New_) {
return $this->proxiedClassFile->handleEnterNew_($node);
}elseif ($node instanceof Node\Expr\FuncCall){
return $this->proxiedClassFile->handleEnterFuncCall($node);
diff --git a/lib/Pinpoint/Common/OriginFileVisitor.php b/lib/Pinpoint/Common/OriginFileVisitor.php
index 5863d11..b63922c 100644
--- a/lib/Pinpoint/Common/OriginFileVisitor.php
+++ b/lib/Pinpoint/Common/OriginFileVisitor.php
@@ -41,7 +41,6 @@ public function runAllVisitor(string $fullPath,array $aopFuncInfo=[], array $nam
$code = file_get_contents($fullPath);
$stmts = $this->phpFileParser->parse($code);
$this->traverser->traverse($stmts);
-
}
private function getVisitor(string& $fullPath,array& $aopFuncInfo=[], array& $naming=[])
diff --git a/lib/Pinpoint/Common/PinpointDriver.php b/lib/Pinpoint/Common/PinpointDriver.php
index f091e0e..bf3b0d6 100644
--- a/lib/Pinpoint/Common/PinpointDriver.php
+++ b/lib/Pinpoint/Common/PinpointDriver.php
@@ -71,6 +71,7 @@ public function start()
RenderAopClassLoader::start();
return ;
}
+
VendorAdaptorClassLoader::enable();
$pluFiles = static::getAutoGenFiles();
foreach ($pluFiles as $file)
diff --git a/lib/Pinpoint/Plugins/AutoGen/GuzzleHttp/GuzzlePlugin.php b/lib/Pinpoint/Plugins/AutoGen/GuzzleHttp/GuzzlePlugin.php
index 80f04e7..9edd7d1 100644
--- a/lib/Pinpoint/Plugins/AutoGen/GuzzleHttp/GuzzlePlugin.php
+++ b/lib/Pinpoint/Plugins/AutoGen/GuzzleHttp/GuzzlePlugin.php
@@ -16,11 +16,11 @@
******************************************************************************/
namespace Pinpoint\Plugins\AutoGen\GuzzleHttp;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
use Pinpoint\Plugins\Sys\curl\CurlUtil;
///@hook:GuzzleHttp\Client::request
-class GuzzlePlugin extends Candy
+class GuzzlePlugin extends PinTrace
{
///@hook:GuzzleHttp\Psr7\Request::__construct
function onBefore()
diff --git a/lib/Pinpoint/Plugins/AutoGen/MongoPlugin/MongoPlugin.php b/lib/Pinpoint/Plugins/AutoGen/MongoPlugin/MongoPlugin.php
index 930f6e8..02f5595 100644
--- a/lib/Pinpoint/Plugins/AutoGen/MongoPlugin/MongoPlugin.php
+++ b/lib/Pinpoint/Plugins/AutoGen/MongoPlugin/MongoPlugin.php
@@ -17,9 +17,9 @@
namespace Pinpoint\Plugins;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class MongoPlugin extends Candy
+class MongoPlugin extends PinTrace
{
/**
diff --git a/lib/Pinpoint/Plugins/AutoGen/Yii2/ConnectionPlugin.php b/lib/Pinpoint/Plugins/AutoGen/Yii2/ConnectionPlugin.php
new file mode 100644
index 0000000..f2cb344
--- /dev/null
+++ b/lib/Pinpoint/Plugins/AutoGen/Yii2/ConnectionPlugin.php
@@ -0,0 +1,41 @@
+who;
+ $dsn = $con->dsn;
+ if (strncmp('sqlite:@', $dsn, 8) === 0) {
+ $dsn = 'sqlite:' . Yii::getAlias(substr($dsn, 7));
+ }
+ $ret = new PDO($dsn, $con->username, $con->password, $con->attributes);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/lib/Pinpoint/Plugins/Common/CommonPlugin.php b/lib/Pinpoint/Plugins/Common/CommonPlugin.php
index 1d79c14..1e7f563 100644
--- a/lib/Pinpoint/Plugins/Common/CommonPlugin.php
+++ b/lib/Pinpoint/Plugins/Common/CommonPlugin.php
@@ -17,7 +17,7 @@
namespace Pinpoint\Plugins\Common;
-class CommonPlugin extends Candy
+class CommonPlugin extends PinTrace
{
///@hook:app\DBcontrol::connectDb
public function onBefore(){
diff --git a/lib/Pinpoint/Plugins/Common/Candy.php b/lib/Pinpoint/Plugins/Common/PinTrace.php
similarity index 98%
rename from lib/Pinpoint/Plugins/Common/Candy.php
rename to lib/Pinpoint/Plugins/Common/PinTrace.php
index 3125ea2..0ec2d02 100644
--- a/lib/Pinpoint/Plugins/Common/Candy.php
+++ b/lib/Pinpoint/Plugins/Common/PinTrace.php
@@ -26,7 +26,7 @@
namespace Pinpoint\Plugins\Common;
require_once "PluginsDefines.php";
-abstract class Candy
+abstract class PinTrace
{
protected $apId;
protected $who;
diff --git a/lib/Pinpoint/Plugins/Common/Trace.php b/lib/Pinpoint/Plugins/Common/Trace.php
index 9c45783..e02080b 100644
--- a/lib/Pinpoint/Plugins/Common/Trace.php
+++ b/lib/Pinpoint/Plugins/Common/Trace.php
@@ -1,4 +1,4 @@
-apId = $apId;
+ $this->who = $who;
+ $this->args = &$args;
}
+ public function __destruct(){}
+
+ function onBefore(){}
+
+ function onEnd(&$ret){}
+
+ public function onException($e) {}
}
\ No newline at end of file
diff --git a/lib/Pinpoint/Plugins/Common/TraceHelper.php b/lib/Pinpoint/Plugins/Common/TraceHelper.php
new file mode 100644
index 0000000..530b641
--- /dev/null
+++ b/lib/Pinpoint/Plugins/Common/TraceHelper.php
@@ -0,0 +1,30 @@
+"s0"];
}
- $nsid = Trace::generateSpanID();
+ $nsid = TraceHelper::generateSpanID();
$header = [
'Pinpoint-Sampled'=>'s1',
'Pinpoint-Flags'=>'0',
diff --git a/lib/Pinpoint/Plugins/Sys/mysqli/MysqliPreparePlugin.php b/lib/Pinpoint/Plugins/Sys/mysqli/MysqliPreparePlugin.php
index 78d928e..c6789fd 100644
--- a/lib/Pinpoint/Plugins/Sys/mysqli/MysqliPreparePlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/mysqli/MysqliPreparePlugin.php
@@ -17,9 +17,9 @@
namespace Pinpoint\Plugins\Sys\mysqli;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class MysqliPreparePlugin extends Candy
+class MysqliPreparePlugin extends PinTrace
{
function onBefore()
{
diff --git a/lib/Pinpoint/Plugins/Sys/mysqli/MysqliQueryPlugin.php b/lib/Pinpoint/Plugins/Sys/mysqli/MysqliQueryPlugin.php
index 621f655..c509e96 100644
--- a/lib/Pinpoint/Plugins/Sys/mysqli/MysqliQueryPlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/mysqli/MysqliQueryPlugin.php
@@ -17,9 +17,9 @@
namespace Pinpoint\Plugins\Sys\mysqli;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class MysqliQueryPlugin extends Candy
+class MysqliQueryPlugin extends PinTrace
{
function onBefore()
diff --git a/lib/Pinpoint/Plugins/Sys/mysqli/StmtExecutePlugin.php b/lib/Pinpoint/Plugins/Sys/mysqli/StmtExecutePlugin.php
index 5f40243..72d8e04 100644
--- a/lib/Pinpoint/Plugins/Sys/mysqli/StmtExecutePlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/mysqli/StmtExecutePlugin.php
@@ -8,14 +8,14 @@
namespace Pinpoint\Plugins\Sys\mysqli;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
/**
* Class StmtExecutePlugin
* record the function execute env
* @package Plugins\Sys\mysqli
*/
-class StmtExecutePlugin extends Candy
+class StmtExecutePlugin extends PinTrace
{
function onBefore()
diff --git a/lib/Pinpoint/Plugins/Sys/phpredis/ConnectPlugin.php b/lib/Pinpoint/Plugins/Sys/phpredis/ConnectPlugin.php
index 1d7b72e..ec1b1ff 100644
--- a/lib/Pinpoint/Plugins/Sys/phpredis/ConnectPlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/phpredis/ConnectPlugin.php
@@ -8,9 +8,9 @@
namespace Pinpoint\Plugins\Sys\phpredis;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class ConnectPlugin extends Candy
+class ConnectPlugin extends PinTrace
{
function onBefore()
diff --git a/lib/Pinpoint/Plugins/Sys/phpredis/GetPlugin.php b/lib/Pinpoint/Plugins/Sys/phpredis/GetPlugin.php
index f88d66c..0d8ffd8 100644
--- a/lib/Pinpoint/Plugins/Sys/phpredis/GetPlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/phpredis/GetPlugin.php
@@ -8,9 +8,9 @@
namespace Pinpoint\Plugins\Sys\phpredis;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class GetPlugin extends Candy
+class GetPlugin extends PinTrace
{
function onBefore()
diff --git a/lib/Pinpoint/Plugins/Sys/phpredis/SetPlugin.php b/lib/Pinpoint/Plugins/Sys/phpredis/SetPlugin.php
index faef57d..11b6a10 100644
--- a/lib/Pinpoint/Plugins/Sys/phpredis/SetPlugin.php
+++ b/lib/Pinpoint/Plugins/Sys/phpredis/SetPlugin.php
@@ -8,9 +8,9 @@
namespace Pinpoint\Plugins\Sys\phpredis;
-use Pinpoint\Plugins\Common\Candy;
+use Pinpoint\Plugins\Common\PinTrace;
-class SetPlugin extends Candy
+class SetPlugin extends PinTrace
{
function onBefore()
diff --git a/lib/Pinpoint/test/Comparison/pinpoint/test/Foo.php b/lib/Pinpoint/test/Cache/Pinpoint/test/Foo.php
similarity index 73%
rename from lib/Pinpoint/test/Comparison/pinpoint/test/Foo.php
rename to lib/Pinpoint/test/Cache/Pinpoint/test/Foo.php
index 5377f18..f9804f4 100644
--- a/lib/Pinpoint/test/Comparison/pinpoint/test/Foo.php
+++ b/lib/Pinpoint/test/Cache/Pinpoint/test/Foo.php
@@ -2,18 +2,18 @@
namespace Pinpoint\test;
-use Pinpoint\Plugins\app\curl_init_01;
-use Pinpoint\Plugins\test\curl;
-use Pinpoint\Plugins\test\type1;
-use Pinpoint\Plugins\type03;
+use plugins\app\curl_init_01;
+use plugins\test\curl;
+use plugins\test\type1;
+use plugins\type03;
use function plugins\app\foo\curl_02 as curl_02;
use function plugins\app\foo\curl_03;
-use Pinpoint\Plugins\PDO;
-use Pinpoint\Plugins\PDO as TPDO;
-use Pinpoint\Plugins\A\B;
+use plugins\PDO;
+use plugins\PDO as TPDO;
+use plugins\A\B;
use App\A\LONG\NAME as ShortName;
use A\B\C;
-class Foo
+class Foo extends \plugins\PDO
{
public function __construct($str, type1 $one, \test\type2 $two, type03 $three)
{
@@ -22,9 +22,9 @@ public function __construct($str, type1 $one, \test\type2 $two, type03 $three)
$curl_01 = new curl_init_01();
$curl_02 = new \plugins\app\curl_init_01();
$a = new \plugins\app\ClassA();
- print_r('pinpoint\\test\\Foo');
+ print_r('Pinpoint\\test\\Foo');
print_r(27);
- print_r('pinpoint\\test\\Foo::__construct');
+ print_r('Pinpoint\\test\\Foo::__construct');
print_r(23);
}
public function testPDO()
diff --git a/lib/Pinpoint/test/Comparison/pinpoint/test/Proxied_TestClass.php b/lib/Pinpoint/test/Cache/Pinpoint/test/Proxied_TestClass.php
similarity index 97%
rename from lib/Pinpoint/test/Comparison/pinpoint/test/Proxied_TestClass.php
rename to lib/Pinpoint/test/Cache/Pinpoint/test/Proxied_TestClass.php
index 4a291d3..29534e4 100644
--- a/lib/Pinpoint/test/Comparison/pinpoint/test/Proxied_TestClass.php
+++ b/lib/Pinpoint/test/Cache/Pinpoint/test/Proxied_TestClass.php
@@ -13,7 +13,7 @@ public function __construct($a, $b, $c)
public function foo($a, $b, $v, $d) : array
{
echo \plugins\A\B\date("y-m-d");
- echo 'pinpoint\\test\\TestClass::foo';
+ echo 'Pinpoint\\test\\TestClass::foo';
echo 20;
return [$a, $b, $v, $d];
}
diff --git a/lib/Pinpoint/test/Cache/pinpoint/test/Proxied_TestTrait.php b/lib/Pinpoint/test/Cache/Pinpoint/test/Proxied_TestTrait.php
similarity index 100%
rename from lib/Pinpoint/test/Cache/pinpoint/test/Proxied_TestTrait.php
rename to lib/Pinpoint/test/Cache/Pinpoint/test/Proxied_TestTrait.php
diff --git a/lib/Pinpoint/test/Comparison/pinpoint/test/TestClass.php b/lib/Pinpoint/test/Cache/Pinpoint/test/TestClass.php
similarity index 98%
rename from lib/Pinpoint/test/Comparison/pinpoint/test/TestClass.php
rename to lib/Pinpoint/test/Cache/Pinpoint/test/TestClass.php
index 1bf6c4a..7b459d0 100644
--- a/lib/Pinpoint/test/Comparison/pinpoint/test/TestClass.php
+++ b/lib/Pinpoint/test/Cache/Pinpoint/test/TestClass.php
@@ -7,8 +7,8 @@
use App\Class3 as FooClass;
use App\Class4 as FooClass4;
use Pinpoint\test\Proxied_TestClass;
-use Pinpoint\test\traitTestPlugin;
-use Pinpoint\test\burden\depress\herb\e\e\f\longNp\victim;
+use pinpoint\test\traitTestPlugin;
+use pinpoint\test\burden\depress\herb\e\e\f\longNp\victim;
use \over;
abstract class TestClass extends Proxied_TestClass
{
diff --git a/lib/Pinpoint/test/Cache/pinpoint/test/TestTrait.php b/lib/Pinpoint/test/Cache/Pinpoint/test/TestTrait.php
similarity index 95%
rename from lib/Pinpoint/test/Cache/pinpoint/test/TestTrait.php
rename to lib/Pinpoint/test/Cache/Pinpoint/test/TestTrait.php
index 3aefa1c..0c93f7a 100644
--- a/lib/Pinpoint/test/Cache/pinpoint/test/TestTrait.php
+++ b/lib/Pinpoint/test/Cache/Pinpoint/test/TestTrait.php
@@ -2,7 +2,7 @@
namespace Pinpoint\test;
-use Pinpoint\test\traitTestPlugin;
+use pinpoint\test\traitTestPlugin;
trait TestTrait
{
use Proxied_TestTrait {
diff --git a/lib/Pinpoint/test/ClassParseTest.php b/lib/Pinpoint/test/ClassParseTest.php
index b5ff480..4f89fc1 100644
--- a/lib/Pinpoint/test/ClassParseTest.php
+++ b/lib/Pinpoint/test/ClassParseTest.php
@@ -2,10 +2,10 @@
namespace Pinpoint\test;
require_once 'bootstrap.php';
-use Pinpoint\Common\OriginFileVisitor;
use PHPUnit\Framework\TestCase;
-use Pinpoint\Common\PinpointDriver;
+use Pinpoint\Common\OriginFileVisitor;
use Pinpoint\Common\NamingConf;
+use Pinpoint\Common\Utils;
use Pinpoint\Common\RenderAopClass;
define('AOP_CACHE_DIR',__DIR__.'/Cache/');
@@ -73,7 +73,9 @@ public function testTrait()
foreach ( RenderAopClass::getInstance()->getLoadeMap() as $class => $location)
{
$exp = str_replace('Cache','Comparison',$location);
- self::assertFileEquals($exp,$location);
+ self::assertFileExists($exp);
+ self::assertFileExists($location);
+ self::assertFileEquals($exp,$location,"$exp!=$location");
}
}
@@ -102,6 +104,8 @@ public function testClass()
foreach ( RenderAopClass::getInstance()->getLoadeMap() as $class => $location)
{
$exp = str_replace('Cache','Comparison',$location);
+ self::assertFileExists($exp);
+ self::assertFileExists($location);
self::assertFileEquals($exp,$location);
}
@@ -115,6 +119,8 @@ public function testNamingReplace()
foreach ( RenderAopClass::getInstance()->getLoadeMap() as $class => $location)
{
$exp = str_replace('Cache','Comparison',$location);
+ self::assertFileExists($location);
+ self::assertFileExists($exp);
self::assertFileEquals($exp,$location);
}
}
diff --git a/lib/Pinpoint/test/Cache/pinpoint/test/Foo.php b/lib/Pinpoint/test/Comparison/Pinpoint/test/Foo.php
similarity index 73%
rename from lib/Pinpoint/test/Cache/pinpoint/test/Foo.php
rename to lib/Pinpoint/test/Comparison/Pinpoint/test/Foo.php
index 5377f18..f9804f4 100644
--- a/lib/Pinpoint/test/Cache/pinpoint/test/Foo.php
+++ b/lib/Pinpoint/test/Comparison/Pinpoint/test/Foo.php
@@ -2,18 +2,18 @@
namespace Pinpoint\test;
-use Pinpoint\Plugins\app\curl_init_01;
-use Pinpoint\Plugins\test\curl;
-use Pinpoint\Plugins\test\type1;
-use Pinpoint\Plugins\type03;
+use plugins\app\curl_init_01;
+use plugins\test\curl;
+use plugins\test\type1;
+use plugins\type03;
use function plugins\app\foo\curl_02 as curl_02;
use function plugins\app\foo\curl_03;
-use Pinpoint\Plugins\PDO;
-use Pinpoint\Plugins\PDO as TPDO;
-use Pinpoint\Plugins\A\B;
+use plugins\PDO;
+use plugins\PDO as TPDO;
+use plugins\A\B;
use App\A\LONG\NAME as ShortName;
use A\B\C;
-class Foo
+class Foo extends \plugins\PDO
{
public function __construct($str, type1 $one, \test\type2 $two, type03 $three)
{
@@ -22,9 +22,9 @@ public function __construct($str, type1 $one, \test\type2 $two, type03 $three)
$curl_01 = new curl_init_01();
$curl_02 = new \plugins\app\curl_init_01();
$a = new \plugins\app\ClassA();
- print_r('pinpoint\\test\\Foo');
+ print_r('Pinpoint\\test\\Foo');
print_r(27);
- print_r('pinpoint\\test\\Foo::__construct');
+ print_r('Pinpoint\\test\\Foo::__construct');
print_r(23);
}
public function testPDO()
diff --git a/lib/Pinpoint/test/Cache/pinpoint/test/Proxied_TestClass.php b/lib/Pinpoint/test/Comparison/Pinpoint/test/Proxied_TestClass.php
similarity index 97%
rename from lib/Pinpoint/test/Cache/pinpoint/test/Proxied_TestClass.php
rename to lib/Pinpoint/test/Comparison/Pinpoint/test/Proxied_TestClass.php
index 4a291d3..29534e4 100644
--- a/lib/Pinpoint/test/Cache/pinpoint/test/Proxied_TestClass.php
+++ b/lib/Pinpoint/test/Comparison/Pinpoint/test/Proxied_TestClass.php
@@ -13,7 +13,7 @@ public function __construct($a, $b, $c)
public function foo($a, $b, $v, $d) : array
{
echo \plugins\A\B\date("y-m-d");
- echo 'pinpoint\\test\\TestClass::foo';
+ echo 'Pinpoint\\test\\TestClass::foo';
echo 20;
return [$a, $b, $v, $d];
}
diff --git a/lib/Pinpoint/test/Comparison/pinpoint/test/Proxied_TestTrait.php b/lib/Pinpoint/test/Comparison/Pinpoint/test/Proxied_TestTrait.php
similarity index 100%
rename from lib/Pinpoint/test/Comparison/pinpoint/test/Proxied_TestTrait.php
rename to lib/Pinpoint/test/Comparison/Pinpoint/test/Proxied_TestTrait.php
diff --git a/lib/Pinpoint/test/Cache/pinpoint/test/TestClass.php b/lib/Pinpoint/test/Comparison/Pinpoint/test/TestClass.php
similarity index 98%
rename from lib/Pinpoint/test/Cache/pinpoint/test/TestClass.php
rename to lib/Pinpoint/test/Comparison/Pinpoint/test/TestClass.php
index 1bf6c4a..7b459d0 100644
--- a/lib/Pinpoint/test/Cache/pinpoint/test/TestClass.php
+++ b/lib/Pinpoint/test/Comparison/Pinpoint/test/TestClass.php
@@ -7,8 +7,8 @@
use App\Class3 as FooClass;
use App\Class4 as FooClass4;
use Pinpoint\test\Proxied_TestClass;
-use Pinpoint\test\traitTestPlugin;
-use Pinpoint\test\burden\depress\herb\e\e\f\longNp\victim;
+use pinpoint\test\traitTestPlugin;
+use pinpoint\test\burden\depress\herb\e\e\f\longNp\victim;
use \over;
abstract class TestClass extends Proxied_TestClass
{
diff --git a/lib/Pinpoint/test/Comparison/pinpoint/test/TestTrait.php b/lib/Pinpoint/test/Comparison/Pinpoint/test/TestTrait.php
similarity index 95%
rename from lib/Pinpoint/test/Comparison/pinpoint/test/TestTrait.php
rename to lib/Pinpoint/test/Comparison/Pinpoint/test/TestTrait.php
index 3aefa1c..0c93f7a 100644
--- a/lib/Pinpoint/test/Comparison/pinpoint/test/TestTrait.php
+++ b/lib/Pinpoint/test/Comparison/Pinpoint/test/TestTrait.php
@@ -2,7 +2,7 @@
namespace Pinpoint\test;
-use Pinpoint\test\traitTestPlugin;
+use pinpoint\test\traitTestPlugin;
trait TestTrait
{
use Proxied_TestTrait {
diff --git a/lib/Pinpoint/test/Foo.php b/lib/Pinpoint/test/Foo.php
index 5f6db2a..f7b6005 100644
--- a/lib/Pinpoint/test/Foo.php
+++ b/lib/Pinpoint/test/Foo.php
@@ -14,7 +14,7 @@
use A\B\C;
-class Foo
+class Foo extends \PDO
{
public function __construct($str,type1 $one,\test\type2 $two, type03 $three)
{
From a837190639d8ebf70e4746c602ba5aea52e50e80 Mon Sep 17 00:00:00 2001
From: eeliu <27064129+eeliu@users.noreply.github.com>
Date: Mon, 20 Dec 2021 18:19:02 +0800
Subject: [PATCH 3/3] ci is failed
---
.github/workflows/main.yml | 2 +-
PHPUnit.xml | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index cd969ab..e1f2cf7 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -17,4 +17,4 @@ jobs:
tools: composer:v2
- run: |
composer install --prefer-dist
- php vendor/bin/phpunit --configuration PHPUnit.xml --testsuit pinpoint --testdox
\ No newline at end of file
+ vendor/bin/phpunit --configuration PHPUnit.xml --testsuit pinpoint --testdox
\ No newline at end of file
diff --git a/PHPUnit.xml b/PHPUnit.xml
index 1d6fe94..b566cab 100644
--- a/PHPUnit.xml
+++ b/PHPUnit.xml
@@ -7,11 +7,10 @@
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
- stopOnFailure="false"
- syntaxCheck="false">
+ stopOnFailure="true">
- lib/pinpoint/test
+ lib/Pinpoint/test